[快速学习] Pytorch简介(XNUMX):实现MLP回归并学习PyTorch的基础知识
上次,我回顾了如何处理火炬,这是PyTorch的基础。
这次,我想在PyTorch中实现多层感知器(MLP)回归,并查看主要的PyTorch软件包。
总流量
模型实现的总体流程如下。 括号中的数字是当时使用的PyTorch软件包。
- 输入数据集的创建,迭代处理(数据集,数据加载器)
- 神经网络的定义(模块)
- 损耗计算,梯度传播到网络参数(nn.Module)
- 更新网络权重(优化器)
主要的PyTorch软件包
与PyTorch无关,许多深度学习框架提供了各种程序包来简化实现。 PyTorch中的主要项目是:
火炬张量 | 多维数组。 PyTorch中使用的数据结构。 |
火炬自动档 | 实施正向/反向传播。支持Tensor的自动微分操作,例如向后传播(backward())。 |
火炬.utils.data | 它包括实用程序,例如“数据集”和“数据加载器”,这些工具收集要输入的数据并将其标签作为一组,而“数据加载器”则以小批量的形式从数据集中提取数据并将其传递给模型。 |
火炬模块 | 用于构建神经网络。负责参数封装,例如保存和加载模型以及移至GPU。 |
火炬优化 | 允许您使用参数优化算法,例如SDG和Adam。 |
模型实施
创建数据集
这次,我们将使用numpy准备sin(5x)加随机数作为练习数据。from_numpy()
转换为torch.tensor。
型号定义
在pytorch中,模型定义为从nn.Module类继承的“ python类”。
MLP类(nn.Module):定义的MLP类继承自父类nn.Module
def init():接收参数并实例化
超级(MLP,self).init():使用父函数继承父类
def转发(自己,x):实例化后调用该函数时有效。 定义前向功能时,也会自动定义后向功能(梯度计算)。
.parameters()
您可以通过它获得网络的结构和参数。
损耗计算/反向传播/重量更新
为了理解个体行为,我们将从x中获取一条数据并将其输入到神经网络中,以查看由于误差计算和权重更新而导致的参数变化。
尝试改变学习循环
对每个批次执行上述流程以训练神经网络。Dataset
返回一组数据和相应的标签,DataLoader
是一个以批处理大小返回数据的类。
可视化计算图
可以使用称为torchviz的python包来可视化此次创建的3层MLP的结构。parameters()
当还不够的时候请。
到目前为止,我们已经通过实施MLP回归确定了PyTorch及其主要PyTorch软件包。
讨论
评论清单
暂无任何评论