L1和L2正则化在pytorch中的应用_傻傻的看着的博客-程序员ITS304

技术标签: 过拟合初探  

最近在自己改写网络的过程中,发现了很多的问题,有一个比较大的问题就是过拟合问题,过拟合问题不仅出现在小数据量的训练中,在大数据量的训练中也有着同样的问题,今天测试了L1和L2正则化,效果还在实验中,如果效果比较好会在后面做及时的更新。

L1正则化:

L1 正则化公式也很简单,直接在原来的损失函数基础上加上权重参数的绝对值:

上式可知,当w大于0时,更新的参数w变小;当w小于0时,更新的参数w变大;所以,L1正则化容易使参数变为0,即特征稀疏化。

L2正则化:

由上式可知,正则化的更新参数相比于未含正则项的更新参数多了

项,当w趋向于0时,参数减小的非常缓慢,因此L2正则化使参数减小到很小的范围,但不为0。

 

在pytorch中没有明确的添加L1和L2正则化的方法,但是可以直接的采用优化器自带的weight_decay选项来制订权重衰减,相当于L2正则化中的λ,

optimizer = torch.optim.Adam(model.parameters(), lr=1e-4, weight_decay=1e-5)

上面这是Adam优化器的一种达到L2正则化效果的一种方式。pytorch中还有很多这样的优化器,如SGD,Adadelta,Adam,Adagrad,RMSprop等,使用它很简单,你需要传入一个可迭代的参数列表(里面必须都是Variable类型的)进行优化,然后你可以指定一些优化器的参数,如学习率,动量,权值衰减等。

 

参考:

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wanli4717/article/details/88759355

智能推荐

B001-Atmega16-定时器1-(ques=1)_Manon_des_sources的博客-程序员ITS304

Atmega16-定时器1 功能测试(定时、CTC、PWM)

autojs今日头条急速脚本_stevenzhao1的博客-程序员ITS304_今日头条极速版脚本

研究了一下刷头条的金币脚本,先下载autojs7pjb.apk安装在手机上,然后下载vscode安装到电脑上,然后安装相关autojs的插件。先新建一个项目,打开main.js,输入auto.waitFor();app.launchApp('今日头条极速版');sleep(10000);if (id("f2").exists()) { back(); id("f2").findOnce().click();}/** * 今日头条读新闻 */for (var i =

PCB原理图绘制(种草立创eda)_ZL.zheng的博客-程序员ITS304_立创eda怎么画原理图

首先,相对于我们平时所用的ad。这个就很适合我们英文不好的中国人了。然后这个一站式搞定,画完商城下单就可以做我们的板子了。整个设计界面也很友好,封装库也不需要我们自己封装。很多商城里面都有,可以直接购买使用。。具体教程我也是初学者,后面学习的时候在做笔记,现在发个学习的链接保存一下。一遍自己可以保存。https://docs.lceda.cn/cn/Videos/Demo-Video/index.html#%E7%AB%8B%E5%88%9BEDA%E5%BF%AB%E9%80%9F%E5%85%A5%

超像素(Superpixel)理解_Linear_Luo的博客-程序员ITS304_超像素是什么意思

最近看点云处理的文章,有些文章中提到了superpixel这个概念,查了一些资料,对其理解记录如下:超像素就是把一幅原本是像素级(pixel-level)的图,划分成区域级(district-level)的图。可以将其看做是对基本信息进行的抽象。超像素分割属于图像分割(image segmentation),再细化应该属于过分割(over segmentation)。比如我们对一幅图像进行超像

Paddle带你零基础入门深度学习_一直都在灬的博客-程序员ITS304_paddle 入门

PaddlePaddle带你零基础入门深度学习第一周手写数字识别任务数据处理网络结构损失函数优化算法训练调试与优化第一周手写数字识别任务手写数字识别任务数据处理数据处理优化 在工业实践中,我们面临的任务和数据环境千差万别,通常需要自己编写适合当前任务的数据处理程序,一般涉及如下五个环节:读入数据划分数据集生成批次数据训练样本集乱序校验数据有效性在数据读取与处理前,首先要加载飞桨和数据处理库,代码如下。# 加载飞桨和相关数据处理的库import paddleimport paddl

随便推点

Android进阶:多线程断点续传下载_BianChengNinHao的博客-程序员ITS304

今天跟大家一起分享下android开发中比较难的一个环节,可能很多人看到这个标题就会感觉头很大,的确如果没有良好的编码能力和逻辑思维,这块是很难搞明白的.什么是多线程下载?多线程下载其实就是迅雷,BT一些下载原理,通过多个线程同时和服务器连接,那么你就可以榨取到较高的带宽了,大致做法是将文件切割成N块,每块交给单独一个线程去下载,各自下载完成后将文件块组合成一个文件,程序上要完成做

python实现登录验证系统(搭建MVC框架)_东木月的博客-程序员ITS304

小型登录注册验证系统一、概述​ 使用Redis+MySQL数据库实现一个小型的登录注册验证系统。在这个系统中初步了解认识MVC框架。​ 具备功能:登录、注册、改密、注销。​ 数据库:Redis,MySQL。​ 开发语言:Python。​ MVC框架:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器...

利用python修改json文件的value_cabinx的博客-程序员ITS304_python修改json文件内容

    做工程时遇到需要监听json文件,根据json文件中的key-value值作出相应处理的情形。为此写了修改json文件的python脚本供工程后续调用。    代码如下:# coding=utf-8 //设置文本格式import os,sysimport jsondef get_new_json(filepath,key,value): key_ = key.split("."...

指向函数的指针(一)_zhenyonghou的博客-程序员ITS304_指向函数的指针

之所以想写一篇函数指针的文章,源于函数指针在C/C++编程中使用的广泛性,而对于一些初级编程者来说对函数指针的使用或许有些迷惑,而一旦在适当的时候使用了函数指针,会使代码简洁有力。本篇介绍的是函数指针的基础部分,函数指针复杂的应用将在下一篇介绍。一  指向普通函数的指针先来看一个函数:int Sum(int a, int b){ return a + b;}这个函数,调用

java事件。_helianus的博客-程序员ITS304

事件一共有三个主体。1.事件源(Source Object),事件的发起者。2.监听器(Listener),监听事件的人。3.事件(Event)本身。举个栗子:你在看某个漂亮小姐姐的直播,当这个小姐姐给你唱了首歌的时候,你给他打赏了一个土豪土匪礼物。1.上面这句话中,小姐姐是事件源,而你则是监听器,监听着小姐姐。2.小

移动网关 CMWAP 返回vnd.wap.wml_H-G-Y的博客-程序员ITS304

用CMWAP接入点发一个http的请求时,移动的10.0.0.172这个代理网关会回一个确认页面,中国特色。处理的办法是检测到Content-type里面有个 vnd.wap.wml就重新发一次请求即可。HTTP/1.1 200 OK [ZTEOSE]Server: ZTEOSEDate: Fri, 30 Jul 2010 03:17:40 GMTServer: WebLo

推荐文章

热门文章

相关标签