torch模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 深度学习 Pytorch笔记 B站刘二大人(4/10)

介绍

至此开始,深度学习模型构建的预备知识已经完全准备完毕。
从本章开始就开始按照实际研究与开发中的流程进行深度学习模型的构建。

实现步骤:

  1. 准备数据集
  2. 设计深度学习模型,计算y_hat
  3. 用pytorch封装功能实现loss函数和 优化函数
  4. 进行顺序训练循环,前馈,反馈,更新

    在构建的过程中同样需要注意,使用tensor数据类型,使用mini-batch形式:一次性求出多种样本的输出结果。
    并运算思维转换为矩阵运算,在进行数据输入时要使用两个中括号


完成了数据的设置后,需要求解出权重w的关于损失函数loss的梯度解析式
大型项目通常使用pytorch封装好的模块,在计算过程中将自动生成运算图。
下图是一个最简单仿射模型,是一个基础线性单元:其数学表达式为
预测值y_hat = 权重w* 输入数据 x +偏置量b
当输出和输出维度不同时,例如下图输入x是41的向量,而输出是31的向量,按照矩阵乘法的运算规则,权重参数w应当是一个3*4的数值矩阵

基本模型类


上图是构建的运算模型,从torch中的深度学习模型类module进行继承,并通过魔法方法super进行重写,设置模型中仅有一个单输入单输出的线性层。使用该方法的好处是从moudel进行继承可以自动构造反向传播函数。

之后定义向前函数forward,记得要在原始函数后再加上形参x

完成模型构建后进行实例化:model = LinearModel()

额外的python编程技巧

Python编程技巧,在定义对象可调用函数__call__()是,形参定义为*args和 *kwargs,其中args将输入的未命名的参数自动形成元组,kwargs将传递参数组成词典


对指向索引

代码解读与实现

模板计算步骤:
1.计算y_hat
2.计算损失loss 2.5 之前的梯度清零
3. backward()计算累积梯度
4. update更新

"""
our model class should be inherit from nn.Module, which is base class for all neural network modules.
member methods __init__() and forward() have to be implemented
class nn.linear contain two member Tensors: weight and bias
class nn.Linear has implemented the magic method __call__(),which enable the instance of the class can
be called just like a function.Normally the forward() will be called
我们模型类应该继承自nn.Module,它是所有神经网络模块的基类。
必须实现成员方法__init__()和forward()
class nn.linear包含两个成员张量:权重和偏差
class nn.linear实现了魔法方法__call__(),这使得类的实例可以
就像函数一样被调用。通常会调用forward()
"""
import torchx_data = torch.Tensor([[1.0], [2.0], [3.0]])  # 第一个[]为将三个输入组合为一组输入向量,第二个[]将数据标志为Tensor数据类型
y_data = torch.Tensor([[2.0], [4.0], [6.0]])  # 同样第一个[]将输出组合为向量,第二个[]将数据标志为Tensor数据类型class LinearModel(torch.nn.Module):     # 定义类,从torch.nn.Module 继承def __init__(self):                 # 魔法方法定义构造函数super(LinearModel, self).__init__()     # super继承父类的init函数self.linear = torch.nn.Linear(1, 1)     # 定义输入输出个数def forward(self, x):y_pred = self.linear(x)return y_predmodel = LinearModel()   # 将定义的网络模型类实例化criterion = torch.nn.MSELoss(size_average=False)    # 通过MSE(交叉熵)计算损失optimizer = torch.optim.SGD(model.parameters(), lr=0.01)    # 通过SGD方法(随机梯度下降法)进行动态更新优化for epoch in range(150):y_pred = model(x_data)loss = criterion(y_pred, y_data)print(epoch, loss)optimizer.zero_grad()       # 将上一次的梯度清零,释放内存loss.backward()     # 反向获取损失梯度optimizer.step()    # 根据损失梯度更新模型参数,进行性能优化# Output weight and bias
print('w =', model.linear.weight.item())
print('b =', model.linear.bias.item())# Test Model
x_test = torch.Tensor([[4.0]])
y_test = model(x_test)print('y_pred =', y_test.item())

作业

使用如下优化器尝试模型效果

【 线性回归 Linear-Regression torch模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人(4/10)】相关推荐

  1. 【 数据集加载 DatasetDataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10)】

    数据集加载 Dataset&DataLoader 模块实现与源码详解 深度学习 Pytorch笔记 B站刘二大人 (7/10) 模块介绍 在本节中没有关于数学原理的相关介绍,使用的数据集和类型 ...

  2. 【卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10)】

    卷积神经网络CNN 实战案例 GoogleNet 实现手写数字识别 源码详解 深度学习 Pytorch笔记 B站刘二大人 (9.5/10) 在上一章已经完成了卷积神经网络的结构分析,并通过各个模块理解 ...

  3. 【多输入模型 Multiple-Dimension 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人 (6/10)】

    多输入模型 Multiple-Dimension 数学原理分析以及源码源码详解 深度学习 Pytorch笔记 B站刘二大人(6/10) 数学推导 在之前实现的模型普遍都是单输入单输出模型,显然,在现实 ...

  4. 【分类器 Softmax-Classifier softmax数学原理与源码详解 深度学习 Pytorch笔记 B站刘二大人(8/10)】

    分类器 Softmax-Classifier softmax数学原理与源码详解 深度学习 Pytorch笔记 B站刘二大人 (8/10) 在进行本章的数学推导前,有必要先粗浅的介绍一下,笔者在广泛查找 ...

  5. 【 反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10)】

    反向传播算法 Back-Propagation 数学推导以及源码详解 深度学习 Pytorch笔记 B站刘二大人(3/10) 数学推导 BP算法 BP神经网络可以说机器学习的最基础网络.对于普通的简单 ...

  6. 【 卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10)】

    卷积神经网络CNN 数学原理分析与源码详解 深度学习 Pytorch笔记 B站刘二大人(9/10) 本章主要进行卷积神经网络的相关数学原理和pytorch的对应模块进行推导分析 代码也是通过demo实 ...

  7. 【 梯度下降算法 Gradient-Descend 数学推导与源码详解 深度学习 Pytorch笔记 B站刘二大人(2/10)】

    梯度下降算法 Gradient-Descend 数学推导与源码详解 深度学习 Pytorch笔记 B站刘二大人(2/10) 数学原理分析 在第一节中我们定义并构建了线性模型,即最简单的深度学习模型,但 ...

  8. 【 非线性回归 Logistics-Regression 模块实现与源码解读 深度学习 Pytorch笔记 B站刘二大人(5/10)】

    非线性回归 Logistics-Regression 模块实现与源码解读 深度学习 Pytorch笔记 B站刘二大人(5/10) 数学推导 什么是logistics函数 在定义上Logistic函数或 ...

  9. 【 线性模型 Linear-Model 数学原理分析以及源码实现 深度学习 Pytorch笔记 B站刘二大人(1/10)】

    线性模型 Linear-Model 数学原理分析以及源码实现 深度学习 Pytorch笔记 B站刘二大人(1/10) 数学原理分析 线性模型是我们在初级数学问题中所遇到的最普遍也是最多的一类问题 在线 ...

最新文章

  1. Apriltag : 用于视觉系统标定图标tag36H11
  2. 【错误记录】Manifest 清单文件报错 ( ..required to specify an explicit value for `android:exported` when the .. )
  3. 人人可以理解的区块链100问
  4. Bug面前程序员的30种反应,戳中你了没
  5. cuda安装配置VS2013
  6. c语言程序设计多个文件,c语言如何单文件变多文件(2个文件),求大神帮忙!!...
  7. python的递归为什么难理解,python - Python - 很难理解这个递归代码示例 - SO中文参考 - www.soinside.com...
  8. Xcode无法启动模拟器或者真机
  9. Android异常处理——try、catch、finally、throw、throws
  10. 微信小程序-基于云开发 CMS + Vant Weapp 电商 Demo 来了!
  11. 【无人机】四旋翼飞行器控制、路径规划和轨迹优化(Matlab代码实现)
  12. nc交换平台翻译器翻译仓库问题以及解决方法
  13. 从头再学java系列之char和Character的区别及Character的源码分析
  14. Prometheus监控学习笔记之Prometheus普罗米修斯监控入门
  15. 3.28leet28
  16. 休问情怀谁得似——冰雪小五台苦旅记(十完结篇)
  17. 桌面 计算机 网络连接怎么办,电脑显示不安全网络连接失败怎么办
  18. 双十一买啥最划算,失眠助眠好物推荐清单
  19. 网络编程(Tcp/Udp实现聊天、文件上传)
  20. DAS、NAS、SAN三种存储架构

热门文章

  1. putty软件下载和教程
  2. 翻译科技论文,俄译中怎样效果好
  3. Happy 2004(积性函数、快速幂取模、费马小定理、求因数和)
  4. Python每日一练(20)-用Python制作mini翻译器
  5. Unity3D摄像机跟随人物
  6. [奥塔在线]压测大师养成之五:Centos下Jmeter安装与部署
  7. 《Imperfect C++中文版》——1.2 编译期契约:约束
  8. 转炉炼钢计算机仿真实验报告,计算机仿真冶炼运用(共4523字).doc
  9. PB8 0应用程序编译发布技术研究
  10. 基于JavaWeb的网上购物系统开发(含代码)