l1、l2正则化在pytorch框架下的实现方式
转载PyTorch训练模型添加L1/L2正则化的两种实现方式_hlld__的博客-CSDN博客_pytorch添加正则化
在使用PyTorch训练模型时,可使用三种方式添加L1/L2正则化:一种是添加正则化项到损失函数中,另一种是在backward()
之后,添加正则化项到参数变量的梯度中,然后再进行step(),一种是
torch.optim优化器实现L2正则化
方式一:添加到损失函数
def l1_regularization(model, l1_alpha):l1_loss = []for module in model.modules():if type(module) is nn.BatchNorm2d:l1_loss.append(torch.abs(module.weight).sum())return l1_alpha * sum(l1_loss)def l2_regularization(model, l2_alpha):l2_loss = []for module in model.modules():if type(module) is nn.Conv2d:l2_loss.append((module.weight ** 2).sum() / 2.0)return l2_alpha * sum(l2_loss)
方式二:添加到参数梯度
在backward()
之后,添加正则化项到参数变量的梯度中,然后再进行step()。这种方式可以指定哪一层使用正则化。
loss=criterion(outputs,labels)
loss.backward()#反向传播求梯度
l1/l2正则化方法
optimizer.step()#更新参数
def l1_regularization(model, l1_alpha):for module in model.modules():if type(module) is nn.BatchNorm2d:module.weight.grad.data.add_(l1_alpha * torch.sign(module.weight.data))def l2_regularization(model, l2_alpha):for module in model.modules():if type(module) is nn.Conv2d:module.weight.grad.data.add_(l2_alpha * module.weight.data)
方式三:torch.optim优化器实现L2正则化
torch.optim集成了很多优化器,如SGD,Adadelta,Adam,Adagrad,RMSprop等,这些优化器自带的一个参数weight_decay,用于指定权值衰减率,相当于L2正则化中的λ参数,注意torch.optim集成的优化器只有L2正则化方法,weight_decay默认0.
optimizer = optim.Adam(model.parameters,lr=learning_rate,weight_decay=0.01)
l1、l2正则化在pytorch框架下的实现方式相关推荐
- 手推公式带你轻松理解L1/L2正则化
文章目录 前言 L1/L2正则化原理 从数学的角度理解L1/L2正则化 从几何的角度理解L1/L2正则化 L1/L2正则化使用情形 前言 L1/L2正则化的目的是为了解决过拟合,因此我们先要明白什么是 ...
- 1.Pytorch框架下使用yolov3-tiny网络模型 训练自己的数据集
在Pytorch框架下使用yolov3-tiny网络模型 ,训练自己的数据集 1.本文参考链接如下: https://blog.csdn.net/gbz3300255/article/details/ ...
- 31,32,33_过拟合、欠拟合的概念、L2正则化,Pytorch过拟合欠拟合,交叉验证-Train-Val-Test划分,划分训练集和测试集,K-fold,Regularization
1.26.过拟合.欠拟合及其解决方案 1.26.1.过拟合.欠拟合的概念 1.26.1.1.训练误差和泛化误差 1.26.1.2.验证数据集与K-fold验证 1.26.1.3.过拟合和欠拟合 1.2 ...
- L0,L1,L2正则化浅析
在机器学习的概念中,我们经常听到L0,L1,L2正则化,本文对这几种正则化做简单总结. 1.概念 L0正则化的值是模型参数中非零参数的个数. L1正则化表示各个参数绝对值之和. L2正则化标识各个参数 ...
- L1 L2正则化和优化器的weight_decay参数
L1正则和L2正则的效果有什么差异?为什么? 角度一:解空间形状 通常认为L1 正则化可以产生稀疏权值矩阵,即产生一个参数稀疏的模型. 而L2 正则化可以让模型的参数取绝对值较小的数. 考虑两种正则化 ...
- L1,L2正则化分析
1. 优化角度分析 1).L2正则化的优化角度分析 在限定的区域,找到使 最小的值. 图形表示为: 上图所示,红色实线是正则项区域的边界,蓝色实线是 的等高线,越靠里的等高圆, 越小,梯度的反方向是 ...
- L1 L2 正则化区别
文章一 文章二 机器学习中,如果参数过多,模型过于复杂,容易造成过拟合(overfit).即模型在训练样本数据上表现的很好,但在实际测试样本上表现的较差,不具备良好的泛化能力.为了避免过拟合,最常用的 ...
- L1,L2正则化理解-奥卡姆剃刀(Occam's razor)原理
L0.L1与L2范数转自:zouxy09@qq.com http://blog.csdn.net/zouxy09 今天我们聊聊机器学习中出现的非常频繁的问题:过拟合与规则化.我们先简单的来理解下常用的 ...
- 踩坑记录: Pytorch框架下--- 从零使用卷积神经网络实现人脸面部表情识别 (基于连续维度)
之前一直在自学深度神经网络的知识,在跟着书本一步一步走的时候,感觉每一个思路,每一句代码都特别容易,实现思路清晰明了,实验代码简单易懂.但当我真正课题需要用到的时候,想跳出书本的框架,自行实现并通透其 ...
最新文章
- 【转】常用数据结构及复杂度
- java开根号函数_Java中真的只有值传递么?
- 用master-worker模型比对团队管理
- 机器学习,计算机视觉相关资料
- vulkan api_Vulkan开放标准API支持,针对Linux的新游戏以及更多游戏
- Java基础学习总结(44)——10个Java 8 Lambda表达式经典示例
- vue 插槽的版本变化1.x-2.6.0-3.x(详细)
- ec20 以太网_轩辕实验室:SOTIF:汽车以太网的容错能力测试(2)
- C# 添加windows右键菜单
- C++简易打字游戏(DEV可运行)
- winword.exe应用程序错误
- 前端如何进行seo优化
- Phaser3之 load
- mysql字段类型NUMC_全自动数字论证机(迫真)
- python安卓开发-一个Android开发者自学Python的心路历程
- html美食网站源码
- 策略模式和工厂模式的区别
- 二、 剖析Netty的工作机制之Buffer、Channel、Selector分析
- 数理逻辑 形式可推演与逻辑推论
- 朋友没有邀请码,也成功让我使用了Club House
热门文章
- 基于c语言的简单的mysql数据库操作
- pyecharsts 柱,饼,线,地图, Bar, Pie, Line, Map,改excel表头 地址 标题即用
- 扩充Ubuntu虚拟机的磁盘容量
- 从深交所2020年创新课题看券商的数智化布局
- android人脸识别 faceu,faceu
- 设计模式之装饰器模式(C++实现)
- 优化算法-BFGS(原理)
- 求三个数最大公约数算法
- matlab生成mif图像文件,matlab 生成mif文件导入quartus rom中
- 2023中国(上海)国际溴化工产业展览会