【动手学深度学习】(六)权重衰退
文章目录
- 一、理论知识
- 二、代码实现
- 2.1从零开始实现
- 2.2简洁实现
- 【相关总结】
主要解决过拟合
一、理论知识
1、使用均方范数作为硬性限制(不常用)
通过限制参数值的选择范围来控制模型容量
通常不限制偏移b
小的意味着更强的正则项
使用均方范数作为柔性限制
对于每个都可以找到使得之前的目标函数等价于下面的:
可以通过拉格朗日乘子来证明
超参数控制了正则项的重要程度
参数更新法则
总结:
- 权重衰退通过L2正则项使得模型参数不会过大,从而控制模型复杂度
- 正则项权重是控制模型复杂度的超参数
二、代码实现
权重衰减是最广泛使用的正则化技术之一
1.首先,人工生成数据
我们选择标签是关于输入的线性函数。 标签同时被均值为0,标准差为0.01高斯噪声破坏。 为了使过拟合的效果更加明显,我们可以将问题的维数增加到, 并使用一个只包含20个样本的小训练集。
%matplotlib inline
import torch
from torch import nn
from d2l import torch as d2l
n_train, n_test, num_inputs, batch_size = 20, 100, 200, 5
true_w, true_b = torch.ones((num_inputs, 1)) * 0.01, 0.05
# print(torch.ones((num_inputs, 1)))
# print(true_w)
train_data = d2l.synthetic_data(true_w, true_b, n_train)
train_iter = d2l.load_array(train_data, batch_size)
# print(train_iter)
test_data = d2l.synthetic_data(true_w, true_b, n_test)
test_iter = d2l.load_array(test_data, batch_size, is_train=False)
2.1从零开始实现
只需将的平方惩罚添加到原始目标函数中。
def init_params():w = torch.normal(0, 1, size=(num_inputs, 1), requires_grad=True)b = torch.zeros(1, requires_grad=True)return [w,b]
定义L2范数惩罚
def l2_penalty(w):return torch.sum(w.pow(2)) / 2
定义训练代码
def train(lambd):w,b = init_params()net, loss = lambda X: d2l.linreg(X, w, b), d2l.squared_lossnum_epochs, lr = 100, 0.003animator = d2l.Animator(xlabel='epochs', ylabel='loss', yscale='log',xlim=[5,num_epochs], legend=['train', 'test'])for epoch in range(num_epochs):for X, y in train_iter:
# 增加了L2范数惩罚项
# 广播机制使l2_penalty(w)成为一个长度为torch_size的向量l = loss(net(X), y) + lambd * l2_penalty(w)l.sum().backward()d2l.sgd([w,b], lr, batch_size)if(epoch + 1) % 5 == 0:animator.add(epoch + 1, (d2l.evaluate_loss(net, train_iter, loss),d2l.evaluate_loss(net, test_iter, loss)))print('w的L2范数是:',torch.norm(w).item())
忽略正则化直接训练
用lambd = 0禁用权重衰减
train(lambd=0)
w的L2范数是: 13.702591896057129
使用权重衰退
train(lambd=3)
w的L2范数是: 0.36873573064804077
2.2简洁实现
在实例化优化器时直接通过weight_decay指定weight decay超参数
def train_concise(wd):net = nn.Sequential(nn.Linear(num_inputs, 1))for param in net.parameters():param.data.normal_()loss = nn.MSELoss(reduction='none')num_epochs, lr = 100, 0.003# 偏置参数没有衰减trainer = torch.optim.SGD([{"params":net[0].weight,'weight_decay': wd},{"params":net[0].bias}], lr=lr)animator = d2l.Animator(xlabel='epochs', ylabel='loss', yscale='log',xlim=[5, num_epochs], legend=['train', 'test'])for epoch in range(num_epochs):for X, y in train_iter:trainer.zero_grad()l = loss(net(X), y)l.mean().backward()trainer.step()if (epoch + 1) % 5 == 0:animator.add(epoch + 1,(d2l.evaluate_loss(net, train_iter, loss),d2l.evaluate_loss(net, test_iter, loss)))print('w的L2范数:', net[0].weight.norm().item())
train_concise(0)
w的L2范数: 12.619434356689453
train_concise(3)
w的L2范数: 0.3909929692745209
【相关总结】
相关文章:
【动手学深度学习】(六)权重衰退
文章目录 一、理论知识二、代码实现2.1从零开始实现2.2简洁实现 【相关总结】 主要解决过拟合 一、理论知识 1、使用均方范数作为硬性限制(不常用) 通过限制参数值的选择范围来控制模型容量 通常不限制偏移b 小的意味着更强的正则项 使用均方范数作为柔…...
动手学习深度学习-跟李沐学AI-自学笔记(3)
一、深度学习硬件-CPU和GPU 芯片:Intel or AMD 内存:DDR4 显卡:nVidia 芯片可以和GPU与内存通信 GPU不能和内存通信 1. CPU 能算出每一秒能运算的浮点运算数(大概0.15左右) 1.1 提升CPU利用率 1.1.1 提升缓存…...
3.2 Puppet 和 Chef 的比较与应用
Puppet 和 Chef 的比较与应用 文章目录 Puppet 和 Chef 的比较与应用Puppet 和 Chef 简介工作原理对比**模块化的重要性**: Puppet 和 Chef 简介 介绍 Puppet 和 Chef 这两个流行的配置管理工具的背景和用途。强调它们的共同目标:实现自动化的系统配置和…...
promise使用示例
下面是一个 Promise 使用示例,通过 Promise 实现异步操作的链式调用: const getUser (userId) > {return new Promise((resolve, reject) > {// 模拟异步请求setTimeout(() > {const users [{ id: 1, name: Alice },{ id: 2, name: Bob },{ …...
一起学docker系列之十四Dockerfile微服务实践
目录 1 前言2 创建微服务模块2.1 **创建项目模块**2.2 **编写业务代码** 3 编写 Dockerfile4 构建 Docker 镜像5 运行 Docker 容器6 测试微服务7 总结8 参考地址 1 前言 微服务架构已经成为现代软件开发中的一种重要方式。而 Docker 提供了一种轻量级、便携式的容器化解决方案…...
Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2
Qt Creator 11.0.3同时使用Qt6.5和Qt5.14.2 概要方法1.打开Qt Creator中的Kit,这里我直接附上几张截图,不同的版本打开位置可能有所不同,总之最终目的是要打开构建套件(Kit)2.可以看到构建套件里面有包含了“构建套件K…...
Python中字符串列表的相互转换详解
更多资料获取 📚 个人网站:ipengtao.com 在Python编程中,经常会遇到需要将字符串列表相互转换的情况。这涉及到将逗号分隔的字符串转换为列表,或者将列表中的元素连接成一个字符串。本文将深入讨论这些情景,并提供丰富…...
09、pytest多种调用方式
官方用例 # content of myivoke.py import sys import pytestclass MyPlugin:def pytest_sessionfinish(self):print("*** test run reporting finishing")if __name__ "__main__":sys.exit(pytest.main(["-qq"],plugins[MyPlugin()]))# conte…...
分布式锁常见实现方案
分布式锁常见实现方案 基于 Redis 实现分布式锁 如何基于 Redis 实现一个最简易的分布式锁? 不论是本地锁还是分布式锁,核心都在于“互斥”。 在 Redis 中, SETNX 命令是可以帮助我们实现互斥。SETNX 即 SET if Not eXists (对应 Java 中…...
26、pytest使用allure解读
官方实例 # content of pytest_quick_start_test.py import allurepytestmark [allure.epic("My first epic"), allure.feature("Quick start feature")]allure.id(1) allure.story("Simple story") allure.title("test_allure_simple_te…...
Uncle Maker: (Time)Stamping Out The Competition in Ethereum
目录 笔记后续的研究方向摘要引言贡献攻击的简要概述 Uncle Maker: (Time)Stamping Out The Competition in Ethereum CCS 2023 笔记 本文对以太坊 1 的共识机制进行了攻击,该机制允许矿工获得比诚实同行更高的挖矿奖励。这种名为“Uncle Maker”的攻击操纵区块时间…...
浅谈可重入与线程安全
文章目录 可重入与线程安全的关系 可重入 若一个程序或子程序可以“在任意时刻被中断然后操作系统调度执行另一段代码,这段代码又使用了该副程序不会出错”,则称其为可重入(reentrant 或 re-entrant)的。即当该副程序正在运作时&…...
深入理解TDD(测试驱动开发):提升代码质量的利器
在日常的软件开发工作中,我们常常会遇到这样的问题:如何在繁忙的项目进度中,保证我们的代码质量?如何在不断的迭代更新中,避免引入新的错误?对此,有一种有效的开发方式能帮助我们解决这些问题&a…...
pyqt5使用pyqtgraph实现动态热力图
pyqt5使用pyqtgraph实现动态热力图 一、效果图 二、流程 1、打开Designer创建一个UI界面 2、把UI转成py 3、创建一个main.py文件 4、在main文件中渲染画布、创建初始数据、画热力图、创建更新数据线程、绑定按钮触发事件三、UI界面 其中h_map.py代码如下: # -*- coding: ut…...
【android开发-16】android中文件和sharedpreferences数据存储详解
1,文件读写方式的数据存储 下面是一个简单的示例,演示如何在Android中使用内部存储来保存和读取文件: 保存文件: try { String data "这是要保存的数据"; FileOutputStream fos openFileOutput("myFile"…...
《当代家庭教育》期刊论文投稿发表简介
《当代家庭教育》杂志是家庭的参谋和助手,社会的桥梁和纽带,人生的伴侣和知音,事业的良师益友。 国家新闻出版总署批准的正规省级教育类G4期刊,知网、维普期刊网收录。安排基础教育相关稿件,适用于评职称时的论文发表…...
【操作教程】如何将外省医保转入广州市区(医保转移接续手续办理)?
登录(可以用微信扫码采用粤省事账号登录,没有粤省事小程序账号的可以自主申请很方便)广东政务服务网https://www.gdzwfw.gov.cn/ 这里不得不吐槽官网开发者,太拉胯了,居然有undefined,多刷新几次就好了&…...
【分布式系统学习】CAP原理详解
CAP原理详解 前言CAP一张图 一、概念1.1 关键词解读1.2 关于CAP(拆分解读)1.3 CAP原理精髓 二、CAP模拟场景举例理解三、CAP原理证明为什么不能同时满足(下面举例说明)3.1 必须满足分区容错性P下的处理方式3.2 不是必须满足分区容…...
【聚类】K-modes和K-prototypes——适合离散数据的聚类方法
应用场景: 假设一批数据,每一个样本中,有唯一标识(id)、品类(cate_id)、受众(users, 小孩、老人、中年等)等属性,希望从其中找出一些样本,使得这…...
Python-炸弹人【附完整源码】
炸弹人 炸弹人是童年的一款经典电子游戏,玩家控制一个类似"炸弹人"的角色,这个角色可以放置炸弹,并在指定的时间内引爆它们消灭敌人以达到目标,此游戏共设有两节关卡,代码如下: 运行效果&#x…...
[英语学习][5][Word Power Made Easy]的精读与翻译优化
[序言] 今日完成第18页的阅读, 发现大量的翻译错误以及不准确. 需要分两篇文章进行讲解. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家这次能学到东西, 同时加入我的社区讨论与交流英语相关的内容. [原著英文与翻译版对照][第18页] Wh…...
Apache Doris 详细教程(一)
1、Doris简介 1.1、doris概述 Apache Doris 由百度大数据部研发(之前叫百度 Palo,2018 年贡献到 Apache 社区后, 更名为 Doris ),在百度内部,有超过 200 个产品线在使用,部署机器超过 1000 台…...
【Vue3从入门到项目实现】RuoYi-Vue3若依框架前端学习——登录页面
若依官方的前后端分离版中,前端用的Vue2,这个有人改了Vue3的前端出来。刚好用来学习: https://gitee.com/weifengze/RuoYi-Vue3 运行前后端项目 首先运行项目 启动前端,npm install、npm run dev 启动后端,按教程配置…...
win11 关闭快速启动,解决重启后部分应用没有关闭的问题
鼠标右击win11开始菜单选择windows终端(管理员)打开输入:powercfg /h off按下回车即可...
python爬虫-某公开数据网站实例小记
注意!!!!某XX网站逆向实例仅作为学习案例,禁止其他个人以及团体做谋利用途!!! 第一步:分析页面和请求方式 此网站没有技巧的加密,仅是需要携带cookie和请求…...
还记得当初自己为什么选择计算机?
还记得当初自己为什么选择计算机? 当初你问我为什么选择计算机,我笑着回答:“因为我梦想成为神奇的码农!我想像编织魔法一样编写程序,创造出炫酷的虚拟世界!”谁知道,我刚入门的那天࿰…...
“数”说新语向未来 | GBASE南大通用2023媒体交流会成功举办
在当前国家信创战略加速实施,及国民经济数字化转型,叠加驱动信息化行业加速发展的大形势下,以“数说新语-GBASE南大通用开放创新再领航”为主题的2023 GBASE南大通用媒体交流日活动在GBASE天津总部举行。来自IT168、ITPUB、韩锋频道、自主可控…...
每天一点python——day88
#每天一点Python——88 #编程两大思想【面向过程与面向对象】 #如图: 面向过程的线性思维: 类似于做菜一步步的来,先怎么样怎么样,再怎么样 如果不一步步的来,例如先炒菜再点火,这样是做不好的 面向对象&a…...
xShell快捷键
Xshell 是一个强大的终端仿真器,它支持多种Linux发行版的远程连接。Xshell提供了一系列的快捷键,以提高用户的操作效率。以下是一些Xshell中常用的快捷键: 新建会话窗口: Ctrl N 或 Ctrl Shift N 在现有会话中打开新标签&…...
OkGo导入失败解决办法
jcenter()maven { url "https://jitpack.io" }再同步就可以了...
java主要就是做网站吗/seo是什么职位简称
标题是我面试的时候使用的一道题目,结果是是使用最笨的方式——使用便利,但是面试官教我使用Set这个类 在网上找了这么一张表,可以看看 自己做的一个小demo可以参考 package hb.array_unite_collate;import java.util.ArrayList;import java…...
一级a做爰片免费网站丶/广告营销顾问
夜光序言: 既然选择了远方,便只顾风雨兼程,哪管山高路远。 正文:...
优秀网站建设哪家好/18款禁用软件黄app免费
1背景需求 建设现代有轨电车满足了不断增加的大量公共交通需求,践行公交优先、绿色、低碳出行的交通理念。松江现代有轨电车网络是上海市规划线网的一部分,现阶段网络规划共6条线路,总长90公里,松江先期实施的2条示范线选在交通密…...
山西省建设厅网站首页6/seo内部优化具体做什么
如图:有2种自定义方法,一种是改源码,一种是初始化 初始化,如下代码: var ue UE.getEditor(XXXid,{//contextMenu:[{label:, cmdName:selectall},{label:,cmdName:cleardoc,exec:function () {this.execCommand( clear…...
佛山顺德容桂做网站的公司/win7优化大师
着互联网的不断发展和逐渐普及,各行各业也纷纷选择了上云之路,腾讯云数据库致力于运用领先技术,助力企业上云,分布式数据库TDSQL就是部署在腾讯云上的一款具备强一致高可用、全球部署架构、分布式水平扩展、高性能、企业级安全等特…...
腾讯学生机wordpress/苏州网站建设费用
人民的名义-抓捕赵德汉1-200 来道简单的逆向题目,学习一下,正好最近简学了下java 文档说明 本文作者:SwBack 创作时间:2023-04-09 20:40:55 知乎:https://www.zhihu.com/people/back-88-87 CSDN:https://blog.csdn.net/qq_30817059 百度搜索: SwBack来一道简单的…...