目录
1.torch.nn库
2.Pytorch与visdom
3.Pytorch与tensorboardX
4.Pytorch与torchvision
1.torch.nn库
- torch.nn是专门为神经网络设计的模块化接口。
- nn构建于autograd之上,可以用来定义和运行神经网络。
- nn.Parameter
- nn.Linear&nn.conv2d等等.
- nn.functional
- nn.Module· nn.Sequential
nn.Parameter
- 定义可训练参数
- self.my_param = nn.Parameter(torch.randn(1))
- self.register_parameter
- nn.ParameterList & nn.ParameterDict 参数列表与字典,可以对多个参数进行定义
nn.Linear&nn.conv2d&nn.ReLU&nn.MaxPool2d(2))&nn.MSELoss等等
- 各种神经网络层的定义,继承于nn.Module的子类
self.conv1 = nn.Conv2d(1,6,(5,5))
调用时: self.conv1(x)
layer = nn.Linear(1,1)
layer.weight = nn.Parameter(torch.FloatTensor([[0]]))
layer.bias = nn.Parameter(torch.FloatTensor([0]))
nn.functional
- 包含torch.nn库中所有函数,包含大量loss和activation function
- torch.nn.functional.conv2d(input, weight, bias=None,stride=1, padding=O, dilation=1, groups=1)
- nn.functional.xxx是函数接口
- nn.functional.xxx无法与nn.Sequential结合使用
- 没有学习参数的(eg. maxpool, loss_func, activation func)等根据个人选择使用nn.functional.xxx或nn.Xxx
- 需要特别注意dropout层
nn 与nn.functional有什么区别?
- nn.functional.xxx是函数接口
- nn.Xxx是.nn.functional.xxx的类封装,并且nn.Xxx都继承于一个共同祖先nn.Module
- nn.Xxx除了具有nn.functional.xxx功能之外,内部附带nn.Module相关的属性和方法,eg. train(), eval(),load_state_dict, state_dict
nn.Module
它是一个抽象概念,既可以表示神经网络中的某个层(layer) ,也可以表示一个包含很多层的神经网络
- model.parameters()
- model.buffers()
- model.state_dict()
- model.modules()
- forward(), to()
所有pytorch的nn库的网址:torch.nn — PyTorch 1.12 documentation
Parameters VS buffers
- 一种是反向传播需要被optimizer更新的,称之为parameter
- self.register_parameter("param", param)
- self.param = nn.Parameter(torch.randn(1))
- 一种是反向传播不需要被optimizer更新,称之为buffer
- self.register_buffer('my_buffer', torch.randn(1))
Facebook专门为Pytorch开发的一款可视化工具,开源于2017年3月,提供了大多数的科学运算可视化API: GitHub - fossasia/visdom: A flexible tool for creating, organizing, and sharing visualizations of live, rich data. Supports Torch and Numpy.
- 支持数值(折线图,直方图等)、图像、文本以及视频等·支持Pytorch、Torch和Numpy
- 用户可以通过编程的方式组织可视化空间或者通过用户接口为数据打造仪表板,检查实验结果和调试代码。
- env:环境&pane:窗
visdom的使用:
- scalar, image, figure, histogram, audio, text, graph, onnx_graph, embedding, pr_curve and videosummaries等不同的可视化展示方式
- pip3 install tensorboardX
- torchvision是独立于pytorch的关于图像操作的一些方便工具库。
相关网站: https://github.com/pytorch/vision
https://pytorch.org/docs/master/torchvision/
- vision.datasets:几个常用视觉数据集,可以下载和加载
- vision.models:已经训练好的模型,例如: AlexNet, VGG,ResNetvision
- transforms:常用的图像操作,例如︰随机切割,旋转,数据类型转换,图像到tensor ,numpy 数组到tensor , tensor到图像等vision.utils、vision.io、vision.ops