PyTorch深度学习框架笔记1
Posted 军军的验证集
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyTorch深度学习框架笔记1相关的知识,希望对你有一定的参考价值。
参考资料
1:http://pytorch.org/tutorials/beginner/blitz/tensor_tutorial.html
2:知乎专栏:https://zhuanlan.zhihu.com/p/25572330
3:《Python语言及其应用》
开始1:基础
100+ Tensor的操作,包括换位、索引、切片、数学运算、线性算法和随机数等等。详见:torch - PyTorch 0.1.9 documentation
开始2:求导计算
主要是说:variableb包含了两部分,一部分是原始数据data,另外一部分就是grad.
这个是说每一个variable都有一个attribute,这个attribute和生成variable的Function有关系,这些都不影响计算下面的导数。
输出结果如下:
分析如下:
一个比较复杂点的,为了分析的方便,修改了官网的代码:
其中需要注意的是[1 1 1]是梯度的缩放因子。另外需要注意的是若requires_grad=False或者不进行设置,则无法构成图,也就是无所谓的梯度了。你可以在这读更多关于Variable 和 Function的文档: pytorch.org/docs/autograd.html
开始2:神经网络
主要是说forward(input)进行前向传播,nn.Module包含层数,torch.nn用于层数的构建,看懂下面这个就没问题了。
上图是进行手写数字识别分类进行分类的神经网络。
一个典型的神经网络的训练过程是这样的:
定义一个有着可学习的参数(或者权重)的神经网络
对着一个输入的数据集进行迭代:
通常使用简单的更新规则: weight = weight + learning_rate * gradient
用神经网络对输入进行处理
计算代价值 (对输出值的修正到底有多少)
将梯度传播回神经网络的参数中
更新网络中的权重
定义一个神经网络:
神经网络包中包含着诸多用于神经网络的模块和代价函数,带有文档的完整清单在这里:torch.nn - PyTorch 0.1.9 documentation
输出的结果:
获取可训练数据,注意注释!其中input数据为四维的,
整个torch.nn包只接受那种小批量样本的数据,而非单个样本。 例如,nn.Conv2d接受一个四维的TensornSamples x nChannels x Height x Width。如果你拿的是单个样本,使用input.unsqueeze(0)来加一个假维度就可以了。
开始3:损失函数
均方根损失函数
开始4:更新权重
以上是关于PyTorch深度学习框架笔记1的主要内容,如果未能解决你的问题,请参考以下文章