当前位置: 首页 > news >正文

正则项学习笔记

目录

1. L2 正则化 岭回归

1.1 L2 norm计算例子

2. L1 正则化

3. 弹性网正则化

4. Dropout


1. L2 正则化 岭回归

在 PyTorch 中,L2 正则化通常通过设置优化器的 weight_decay 参数实现。以下是一个简单的例子:

介绍博文:

正则化(1):通俗易懂的岭回归

import torch
import torch.nn as nn
import torch.optim as optim# 定义一个简单的模型
class Model(nn.Module):def __init__(self):super(Model, self).__init__()self.fc1 = nn.Linear(10, 5)self.fc2 = nn.Linear(5, 2)def forward(self, x):x = torch.relu(self.fc1(x))x = self.fc2(x)return x# 创建模型和数据
model = Model()
inputs = torch.randn(1, 10)
targets = torch.tensor([1, 0], dtype=torch.float32)# 定义损失函数和优化器
criterion = nn.MSELoss()
optimizer = optim.SGD(model.parameters(), lr=0.01, weight_decay=1e-5)  # L2 正则化# 训练模型
optimizer.zero_grad()
outputs = model(inputs)
loss = criterion(outputs, targets)
loss.backward()
optimizer.step()

1.1 L2 norm计算例子

import numpy as np# 假设一些模型权重
weights = np.array([1.5, -2.3, 0.7, -0.9])# 计算 L2 范数(即所有权重平方的平方根)
l2_norm = np.sqrt(np.sum(np.square(weights)))# 计算 L2 正则化项,这里使用一个正则化参数 lambda
lambda_param = 0.01
l2_regularization = lambda_param * 0.5 * np.sum(np.square(weights))print("L2 Norm of weights:", l2_norm)
print("L2 Regularization term:", l2_regularization)

2. L1 正则化

在 PyTorch 中,实现 L1 正则化需要自定义损失函数,包括权重的 L1 范数:

# 计算 L1 正则化损失
def l1_penalty(model):l1_norm = sum(p.abs().sum() for p in model.parameters())return l1_norm# 添加 L1 正则化到总损失
lambda1 = 0.01
l1_loss = l1_penalty(model)
total_loss = loss + lambda1 * l1_loss

3. 弹性网正则化

弹性网正则化结合了 L1 和 L2 正则化:

lambda1 = 0.01
lambda2 = 0.01l1_loss = l1_penalty(model)
l2_loss = sum(p.pow(2.0).sum() for p in model.parameters())elastic_net_loss = lambda1 * l1_loss + lambda2 * l2_loss
total_loss = loss + elastic_net_loss

4. Dropout

Dropout 是一种在训练过程中随机丢弃网络中一部分神经元的方法:

class DropoutModel(nn.Module):def __init__(self):super(DropoutModel, self).__init__()self.fc1 = nn.Linear(10, 5)self.dropout = nn.Dropout(0.2)self.fc2 = nn.Linear(5, 2)def forward(self, x):x = torch.relu(self.fc1(x))x = self.dropout(x)x = self.fc2(x)return x# 使用 DropoutModel 替代原始模型
model = DropoutModel()

相关文章:

  • Windows:iHasher-v0.2安装报错Windows 功能 .NET Framework 3.5
  • 2024年 电工杯 (A题)大学生数学建模挑战赛 | 园区微电网风光储协调优化配置 | 数学建模完整代码解析
  • 【ChatGPT】 Microsoft Edge 浏览器扩展使用 GPT
  • 【会议征稿,IEEE独立出版】第四届计算机技术与信息科学国际研讨会(ISCTIS 2024)
  • Java面试八股之有哪些线程安全的集合类
  • 【晶体拆解】Quartz MEMS Oscillator
  • 【Java】手把手学会数组的使用
  • react使用AntV
  • IPD在卷烟工业企业研发管理中应用
  • 深入 Rust 标准库,Rust标准库源代码系统分析
  • YOLOv8实例分割离线数据增强,标签可视化!
  • 切换分支报错:Untracked Files Prevent Checkout
  • mysql实战——mysql5.7保姆级安装教程
  • MySQL——存储过程,触发器
  • C++的文件I/O与流stream
  • 【前端学习】-粗谈选择器
  • Android 初级面试者拾遗(前台界面篇)之 Activity 和 Fragment
  • JSDuck 与 AngularJS 融合技巧
  • nodejs调试方法
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Webpack入门之遇到的那些坑,系列示例Demo
  • 安装python包到指定虚拟环境
  • 闭包--闭包作用之保存(一)
  • 大数据与云计算学习:数据分析(二)
  • 二维平面内的碰撞检测【一】
  • 发布国内首个无服务器容器服务,运维效率从未如此高效
  • 思维导图—你不知道的JavaScript中卷
  • HanLP分词命名实体提取详解
  • Java总结 - String - 这篇请使劲喷我
  • SAP CRM里Lead通过工作流自动创建Opportunity的原理讲解 ...
  • 大数据全解:定义、价值及挑战
  • 没有任何编程基础可以直接学习python语言吗?学会后能够做什么? ...
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • ​Benvista PhotoZoom Pro 9.0.4新功能介绍
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • ​插件化DPI在商用WIFI中的价值
  • # 计算机视觉入门
  • # 利刃出鞘_Tomcat 核心原理解析(七)
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • #systemverilog# 之 event region 和 timeslot 仿真调度(十)高层次视角看仿真调度事件的发生
  • #图像处理
  • $.ajax()参数及用法
  • $GOPATH/go.mod exists but should not goland
  • (react踩过的坑)Antd Select(设置了labelInValue)在FormItem中initialValue的问题
  • (solr系列:一)使用tomcat部署solr服务
  • (阿里云万网)-域名注册购买实名流程
  • (数据结构)顺序表的定义
  • (四)linux文件内容查看
  • (一)WLAN定义和基本架构转
  • .Net 4.0并行库实用性演练
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core 网络数据采集 -- 使用AngleSharp做html解析
  • .Net Redis的秒杀Dome和异步执行
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...