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:基础

PyTorch深度学习框架笔记1

100+ Tensor的操作,包括换位、索引、切片、数学运算、线性算法和随机数等等。详见:torch - PyTorch 0.1.9 documentation

PyTorch深度学习框架笔记1

PyTorch深度学习框架笔记1

PyTorch深度学习框架笔记1

PyTorch深度学习框架笔记1

开始2:求导计算

PyTorch深度学习框架笔记1

主要是说:variableb包含了两部分,一部分是原始数据data,另外一部分就是grad.

PyTorch深度学习框架笔记1

这个是说每一个variable都有一个attribute,这个attribute和生成variable的Function有关系,这些都不影响计算下面的导数。

PyTorch深度学习框架笔记1

输出结果如下:

PyTorch深度学习框架笔记1

分析如下:

PyTorch深度学习框架笔记1

一个比较复杂点的,为了分析的方便,修改了官网的代码:

PyTorch深度学习框架笔记1

PyTorch深度学习框架笔记1

其中需要注意的是[1 1 1]是梯度的缩放因子。另外需要注意的是若requires_grad=False或者不进行设置,则无法构成图,也就是无所谓的梯度了。你可以在这读更多关于Variable 和 Function的文档: pytorch.org/docs/autograd.html

开始2:神经网络

PyTorch深度学习框架笔记1

主要是说forward(input)进行前向传播,nn.Module包含层数,torch.nn用于层数的构建,看懂下面这个就没问题了。

PyTorch深度学习框架笔记1

上图是进行手写数字识别分类进行分类的神经网络。

一个典型的神经网络的训练过程是这样的:

  • 定义一个有着可学习的参数(或者权重)的神经网络

  • 对着一个输入的数据集进行迭代:

    • 通常使用简单的更新规则: weight = weight + learning_rate * gradient

    • 用神经网络对输入进行处理

    • 计算代价值 (对输出值的修正到底有多少)

    • 将梯度传播回神经网络的参数中

    • 更新网络中的权重


定义一个神经网络:


神经网络包中包含着诸多用于神经网络的模块和代价函数,带有文档的完整清单在这里:torch.nn - PyTorch 0.1.9 documentation

PyTorch深度学习框架笔记1

PyTorch深度学习框架笔记1

输出的结果:

PyTorch深度学习框架笔记1

获取可训练数据,注意注释!其中input数据为四维的,

整个torch.nn包只接受那种小批量样本的数据,而非单个样本。 例如,nn.Conv2d接受一个四维的TensornSamples x nChannels x Height x Width。如果你拿的是单个样本,使用input.unsqueeze(0)来加一个假维度就可以了。

PyTorch深度学习框架笔记1

开始3:损失函数

均方根损失函数

PyTorch深度学习框架笔记1

开始4:更新权重


以上是关于PyTorch深度学习框架笔记1的主要内容,如果未能解决你的问题,请参考以下文章

李沐《动手学深度学习》第二版 pytorch笔记1 环境搭建

‹拆书分享篇›深度学习框架PyTorch入门与实践

「深度学习一遍过」必修10:pytorch 框架的使用

PyTorch框架+Python 3面向对象编程学习笔记

李宏毅机器学习 p5(pytorch 1)学习笔记

《TensorFlow实战Google深度学习框架(第二版)》学习笔记及书评