ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Deep Neural Networks with Pytorch(2)

2021-07-31 16:03:54  阅读:190  来源: 互联网

标签:Training Linear 梯度 Deep Networks Pytorch 2.2 2.1 Regression


目录

2.1 Linear Regression in 1D prediction

1.linear regression

2.pytorch中:Linear类,如何通过nn.module自定义层

2.2 Linear Regression Training

1.训练Training

2.损失Loss

①梯度下降是什么

②学习率learning rate选择的问题

③何时停止梯度下降

④Cost


2.1 Linear Regression in 1D prediction

1.linear regression

2.pytorch中:Linear类,如何通过nn.module自定义层

!!Pytorch中同时处理多个输入,认为每一行是一个样本

  1. Linear Regression

线性回归:拟合特征和值之间的线性关系

在pytorch中可以一次输入多个样本,只要其中每一行表示一个样本就行

2     Linear Class

图2.1-1  Linear模块

其中,in_features是每个输入样本的维度(输入的列数),out_features输出的维度。

model.parameters()方法查看模型中的参数,注意在前向传播的时候不需要显式调用forward函数,只需要用括号代理就会自动调用forward。

3     自定义Modules

表2.1-1  创建自定义modules

  • Import torch.nn as nn
  • 继承nn.Module类
  • __init__(in_features,out_features)函数初始化父类构造器,传入输入输出维度参数,定义网络层
  • forward方法中进行前向传播的计算过程,返回计算结果

可以使用  [model].state_dict()[‘key’].data[idx]  来修改模型中的参数(图2.1-2

图2.1-2  用state_dict()方法修改模型参数

[model].state_dict()返回一个python字典,可以用keys()获得其键,用values()获得值(图2.1-3)

 

图2.1-3  用state_dict()方法的keys()和values()方法


2.2 Linear Regression Training

1.训练Training

2.损失Loss

1.训练Training

对于Linear Regression,对于噪声的假设是Gassian分布的(图2.2-1),当Gassian分布的标准差越大,数据分布越分散,样本的偏离程度就越大

图2.2-1  左图中的横轴表示偏移直线的量,纵轴表示添加该噪声的概率

Linear Regression训练的过程就是找拟合数据点的最好的直线参数的过程,通过最小化均方误差和(MSE)来实现:(图2.2-2)

图2.2-2  MSE公式

  1. 损失Loss

Loss就是一个关于参数的函数,其值取决于参数的取值,提供了评判当前参数值好坏的标准

1.Gradient Descent

梯度下降是找函数最小值的方法。

①梯度下降是什么

②学习率learning rate选择的问题

③何时停止梯度下降

④Cost

1.梯度下降是什么

 

图2.3-1  梯度下降

为了找寻最小值,需要将参数向梯度导数的负数方向移动一小段距离。

2.学习率learning rate选择的问题

学习率太大会跳过最小值,学习率太小导致训练次数增加。

3.何时停止梯度下降

设置迭代次数;看loss是否停止下降

4.Cost

一个batch上损失函数(loss)的总和或者平均叫代价函数(cost)。

2.Pytorch Slope

一个epoch在整个数据集上迭代一次的过程,因此GD算法一次迭代就是一个epoch。而SGD则是多次迭代一个epoch。

图2.4-1  手动更新参数值

1.Pytorch Linear Regression Training Slope and Bias

 

图2.5-1  损失函数/w,b曲面—等高线图

 

图2.5-2  梯度方向垂直于等高线,指向最小值方向p

注:本文所有截图来自Coursera同名课程,感谢Coursera提供的学习资源~

标签:Training,Linear,梯度,Deep,Networks,Pytorch,2.2,2.1,Regression
来源: https://blog.csdn.net/qq_37840762/article/details/119276690

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有