# 权重衰退是广泛应用的正则化技术
%matplotlib inline
import torch
from torch import nn
from d2l import torch as d2l

人工数据集
y=0.05+∑i=1d0.01xi+ϵ,whereϵ∼η(0,0.012),ϵ是偏差y=0.05+\sum\limits^d_{i=1}0.01x_i+\epsilon, where \epsilon\sim \eta(0,0.01^2), \epsilon是偏差y=0.05+i=1∑d​0.01xi​+ϵ,whereϵ∼η(0,0.012),ϵ是偏差

# 数据
n_train,n_test,num_inputs,batch_size=20,100,200,5
# true_b=0.05
true_w,true_b=torch.ones((num_inputs,1))*0.01,0.05
# 20个训练数据样本,模型容量大(num_inputs=100)+数据量小=容易发生过拟合
train_data=d2l.synthetic_data(true_w,true_b,n_train)
train_iter=d2l.load_array(train_data,batch_size)
# 5个测试数据样本,实际上是验证集
test_data=d2l.synthetic_data(true_w,true_b,n_test)
test_iter=d2l.load_array(test_data,batch_size,is_train=False)
# 训练
def train_concise(wd):''':param wd lambda的值'''# 模型net=nn.Sequential(nn.Linear(num_inputs,1))# 参数for param in net.parameters():param.data.normal_()# 损失函数loss=nn.MSELoss()# 超参数num_epochs,lr=100,0.003# 优化算法# 参数w使用了权重衰退,偏置b没有使用权重衰退# 从0开始实现,正则项在loss函数中。简洁实现,正则项在优化函数中# weight_decay就是lambdatrainer=torch.optim.SGD([{'params':net[0].weight,'weight_decay':wd},{'params':net[0].bias}],lr=lr)# 展示 xlabel, x轴代表什么;ylabel,y轴代表什么;yscale,y轴缩放类型;xlim,x轴范围限制;legend,铭文,图例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:# 上下文管理器# 先调用with后面的`troch.enable_grad()`的`__enter__()`方法,执行完with内部再调用troch.enable_grad()`的` __exit__()`with torch.enable_grad():# 将梯度清0trainer.zero_grad()# 计算损失函数l=loss(net(X),y)# 后向传播计算梯度l.backward()# 向前一步,更新参数whebtrainer.step()# 运行完5个epoch之后展示1次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())# 无正则项lambda=0
train_concise(0)
# 有正则项且lambda=3
train_concise(3)
# 有正则项且lambda=10
train_concise(10)
w的L2范数: 0.12623214721679688

query

pytorch支持复数神经网络?

  • 答:不支持,但将复数的两个组成变成两维

参数选择范围小,模型复杂度降低

  • 答:参数weight越大,拟合曲线越陡峭;
  • 答:参数weight的可选范围越大,陡峭曲线出现的概率就越大;
  • 答:参数weight可选范围小,平滑曲线出现的概率就越大

实际中权重衰减取值?

  • 答:wd=lambda=1e-3,1e-2,1e-4

实际中权重衰退效果不好?

  • 答:有一点点效果。模型很复杂的情况下,权重衰退不会带来好的效果

14李沐动手学深度学习v2/权重衰退简洁实现相关推荐

  1. 李沐动手学深度学习v2/总结1

    总结 编码过程 数据 数据预处理 模型 参数,初始化参数 超参数 损失函数,先计算损失,清空梯度(防止有累积的梯度),再对损失后向传播计算损失关于参数的梯度 优化算法,使用优化算法更新参数 训练求参数 ...

  2. 李沐动手学深度学习V2-全卷积网络FCN和代码实现

    一.全卷积网络FCN 1. 介绍 语义分割是对图像中的每个像素分类,全卷积网络(fully convolutional network,FCN)采用卷积神经网络实现了从图像像素到像素类别的变换 ,与前 ...

  3. 李沐动手学深度学习(pytorch版本)d2lzh_pytorch包的缺少安装问题

    学习深度学习时候,很多人参考的是李沐的动手学深度学习Pytorch版本(附上官方地址:https://tangshusen.me/Dive-into-DL-PyTorch/#/). 在学习3.5.1节 ...

  4. 【李沐动手学深度学习】读书笔记 01前言

    虽然之前已经学过这部分内容和深度学习中的基础知识,但总觉得学的不够系统扎实,所以希望再通过沐神的课程以及书籍,系统条理的学习一遍.在读书过程中,利用导图做了一下梳理,形成了这个读书笔记.如有侵权,请联 ...

  5. 关于李沐动手学深度学习(d2l)pytorch环境本地配置

    本地安装d2l 由于之前试了很多次d2l课本的安装方法失败了,这里提供一种我可以成功安装d2l包的方法. pytorch安装 首先安装cuda.cudnn.pytroch(gpu版本).可以参考这篇文 ...

  6. 李沐动手学深度学习:08 线性回归(代码逐行理解)

    目录 一.相关资料连接 1.1 李沐视频 1.2 代码.PPT 二.代码及笔记(使用Jupyter Notebook) 2.1 线性回归从零开始实现 2.1.1 基本概念 2.1.2 基础优化算法 2 ...

  7. windows上配置深度学习(李沐-动手学深度学习)

    1.安装miniconda windows下安装,去清华大学开源镜像下载,速度比较快. 选中Miniconda3-latest-Windos-x86_64.exe下载安装包(目前最新的是py3.9) ...

  8. 李沐动手学深度学习第四章-4.9.环境和分布偏移

    我们从来没有想过数据最初从哪里来?以及我们计划最终如何处理模型的输出? 根据测试集的精度衡量,模型表现得非常出色. 但是当数据分布突然改变时,模型在部署中会出现灾难性的失败. 解决方案很简单(要求&q ...

  9. 李沐动手学深度学习V2-图像增广和代码实现

    图像增广 大型数据集是成功应用深度神经网络的先决条件,因为解决了大型复杂网络的过拟合性. 图像增广在对训练图像进行一系列的随机变化之后,生成相似但不同的训练样本,从而扩大了训练集的规模. 此外,应用图 ...

最新文章

  1. File Filter用法
  2. 凯撒密码C语言去掉空格字符,凯撒密码的问题C语言
  3. python打开一个文件夹下所有txt文件-python读取一个目录下所有txt里面的内容方法...
  4. bios设置_大白菜U盘启动BIOS设置教程
  5. 序1--年轻正当时(特权)
  6. 正则表达式的捕获性分组/反向引用
  7. POJ-3041 匈牙利算法 二分图最大匹配
  8. 小猿圈分享-数据分析工具
  9. 联想台式机usb驱动_windows安装系列教程—驱动安装
  10. python后端和爬虫_【后端开发】python爬虫难学吗
  11. android 免费云测平台,免费的移动APP真机云测试平台|iTestin云测工具 v3.0.8
  12. 明尼苏达大学双城分校计算机科学,UMN的Computer Science Engineering「明尼苏达大学双城分校计算机科学与工程系」...
  13. “大众摄影”“北外亚非学院”等网站被挂马
  14. 乔布斯简介及其十大经典语录
  15. css中的flex(弹性)布局
  16. 前端1——html笔记
  17. 201521123037 《Java程序设计》第7周学习总结
  18. 架构设计--软件工程
  19. C++:实现量化Libor市场模型流程测试实例
  20. 2021 年第十三届四川省 ACM-ICPC 大学生程序设计竞赛(A/B/D/H/E/K/M/L)

热门文章

  1. ggplot2--geom_smooth和曲线拟合画图
  2. html如何让图片边缘模糊化,如何淡化图片周围区域?照片四周虚化怎么弄|最好的照片处理软件...
  3. 1112 KGold
  4. 前端还在切图?学完这些css,再也不用切图了!
  5. 11 个让你惊叹的罕见 JavaScript One-Liner
  6. Spring的xml配置文件中tx命名空间
  7. 服务器异常流量导致性能下降怎么解决,云服务器查看异常流量
  8. 国开电大 创业教育 形考任务作业1-4
  9. Hadoop ResourceManager:
  10. 【STM32标准库】【基础知识】外部中断