1、Sequential创建层
(1) 写法一
net = nn.Sequential( nn.Linear(num_inputs, 1) # 此处还可以传入其他层 )#
(2)写法二
net = nn.Sequential()net.add_module('linear', nn.Linear(num_inputs, 1))# net.add_module ......
#(3)写法三
from collections import OrderedDict
net = nn.Sequential(OrderedDict([ ('linear', nn.Linear(num_inputs, 1)) ]))
2、修改学习率
有时候我们不想让学习率固定成一个常数,那如何调整学习率呢?主要有两种做法。一种是修改optimizer.param_groups中对应的学习率,另一种是更简单也是较为推荐的做法——新建优化器,由于optimizer十分轻量级,构建开销很小,故而可以构建新的optimizer。但是后者对于使用动量的优化器(如Adam),会丢失动量等状态信息,可能会造成损失函数的收敛出现震荡等情况。
3、torch的各个模块的作用
torch.utils.data模块提供了有关数据处理的工具,
torch.nn模块定义了大量神经网络的层,
torch.nn.init模块定义了各种初始化方法,
torch.optim模块提供了很多常用的优化算法。
4、torchvision包
它是服务于PyTorch深度学习框架的,主要用来构建计算机视觉模型。torchvision主要由以下几部分构成:
torchvision.datasets: 一些加载数据的函数及常用的数据集接口;
torchvision.models: 包含常用的模型结构(含预训练模型),例如AlexNet、VGG、ResNet等;
torchvision.transforms: 常用的图片变换,例如裁剪、旋转等;
torchvision.utils: 其他的一些有用的方法。