pytorch 之 nn 库与调试
系列文章目录
文章目录
- 系列文章目录
- 一、torch.nn 库
- 1. nn.Parameter
- 2. 基于nn.Moduel 的接口
- 3. nn.functional
- 4.nn.Sequential
- 二、调式visdom
- 1. vidom 功能简介
- 2. visdom 安装
- visdom 简单编程
- 三、tensorboardX 数据可视化工具
一、torch.nn 库
- torch.nn 是专门为神经网络设计的接口
- torch.nn 构建于 autograd 之上,可以用来定义和构建神经网络。
五个常用的函数:
nn.Patameter
nn.Linear & nn.cov2d
nn.functional
nn.Model
nn.Sequential
1. nn.Parameter
该接口来定义可训练参数:
- self.my_param = nn.Parameter(torch.randn(1)) 定义和初始化参数
- self.register_parameter 注册可训练参数,效果一致
- nn.ParameterList & nn.ParameterDict 使用列表或者字典来定义多个可训练的参数。
import torch
from torch import nnself.paramas = nn.ParameterList([nn.Parameter(torch.randn(10,10)) for i in range(10)])self.grads = nn.ParameterDisct({'left': nn.Parameter(torch.randn(5,10)),'right': nn.Parameter(torch.randn(5.10))
})
列表和字典与我们Python定义的数据结构是一样的。
2. 基于nn.Moduel 的接口
nn.Linear & nn.conv2d & nn.ReLU & nn.MaxPool2d() & nn.MESLoos
这些函数都基于 nn.Module,实现了前向传播和后向传播,我们直接调用就行,非常省事
- 各种神经网络层的定义,基于 nn.Module 的子类
- self.conv1 = nn.Conv2d(1,6,(5,5)) 定义一个卷积类,初始化卷积的具体参数。
- 调用时 self.conv1(x) 调用这个卷积类,进行一次卷积操作,前向运算。
- 定义网络层,参数为Parameter 类型,也叫可训练类型的参数:
- lay = nn.Linear(1,1)
- lay.weight = nn.Parameter(torch.FloatTensor([[0]]))
- lay.bias = nn.Parameter(torch.FloatTensor([0]))
3. nn.functional
包含 torch.nn 库中所有的函数,包含大量的 Loss 和 activation function:
- nn.functional.conv2d(input,weight,bias = None,Stride = 1,padding = 0,dialtion = 1,groups = 1) 这个是函数,不是类,与上面有本质的区别
- nn.functional.xx 本质上就是一个函数接口,无法和 nn.Sequential 结合使用。没有学习参数使用 nn.xx 和 nn.functional.xx 都可以,有学习参数就建议使用 nn.xx.
- 特别注意 DropOut 层。
4.nn.Sequential
作用就是把层次给串联起来,形成一个模型
# Example of use Sequential
model = nn.Sequential(nn.Conv2d(1, 5, 10),nn.ReLU(),nn.Conv2d(1, 5, 10),nn.ReLU(),
)# Example of using Sequential with OrderedDict
model1 = nn.Sequential(OrderedDict([('conv1', nn.Conv2d(1, 5, 10)),('relu1':nn.ReLu()),('conv2', nn.Conv2d(20, 64, 5)),('relu2':nn.ReLu())
]))
二、调式visdom
1. vidom 功能简介
visdom 主要应用于我们展示神经网络运行的中间过程,一些中间结果,检测结果的变化过程可视化等等。我们可以将 visdom 理解成一个库:
- 支持数值、文本、视频等可视化。
- 支持 pyotorch、torch、numpy
图1 例举了数据可视化的一些图表,通过这些可视化的图表,我们可以更加直观的看出数据的变化规律,看起来就很专业。

2. visdom 安装
安装:
pip install visdom
启动服务:
python -m visdom.server
visdom 简单编程
import visdom
import numpy as np
vis = visdom.Visdom()
vis.text("hello,四川兔兔")
vis.image(np.ones((3,10,10)))
具体的实例展示,在搭建神经网络章节,后面会完善这篇文章。
三、tensorboardX 数据可视化工具
这个工具是基于tensorboard,专门用于pytorch的数据可视化:
1.支持 scalar, image, figure, histogram, audio, text, graph等等不同的可视化展示方式
2. 安装:pip install tensorboardX
最后如果本文有帮助,帮我点击小店吧,浏览下就行,谢谢朋友们。