Pytorch袖珍手册之五
原书下载地址:
我用阿里云盘分享了「OReilly.PyTorch.Pocket.R...odels.149209000X.pdf」,你可以不限速下载🚀
复制这段内容打开「阿里云盘」App 即可获取
链接:https://www.aliyundrive.com/s/NZvnGbTYr6C
第三章 基于Pytorch的深度学习开发
该笔记为原书第三章后半部分
模型开发 Model Development
- 数据准备
- 模型构建
- 模型训练
- 模型验证,调优
- 模型测试,评价模型
- 模型实际应用
模型设计
近几年来,模型设计方面得到了很大的发展,不管是在工业界还是在学术界,每年都有很多的相关论文发表出来。
- 用已有训练好的模型
在实际应用中,若我们面对的问题跟已有模型处理问题相似,前期可以调用已有模型进行训练再微调,这样可以大大提升工作效率。
Pytorch里提供了大部分主流成熟的模型,让大家直接调用,如计算机视觉模型torchvision.models。
from torchvison import models
# pretrained=True,调用已训练好的模型包括结构及参数
vgg16 = models.vgg16(pretrained=True)
# 查看网络结构
print(vgg16)
# out:
# Sequential(
# (0): Linear(in_features=25088,
# out_features=4096, bias=True)
# (1): ReLU(inplace=True)
# (2): Dropout(p=0.5, inplace=False)
# (3): Linear(in_features=4096,
# out_features=4096, bias=True)
# (4): ReLU(inplace=True)
# (5): Dropout(p=0.5, inplace=False)
# (6): Linear(in_features=4096,
# out_features=1000, bias=True)
# )
Linear, ReLU, and Dropout are torch.nn modules. torch.nn is used to create NN layers, activations, loss functions, and other NN components.
torchvision里提供的模型库:https://pytorch.org/vision/stable/models.html
Pytorch Hub里包括了一些不错的已训练好的模型,我们可以通过torch.hub.load()来加载所需的模型。
Pytorch Hub模型库:https://pytorch.org/hub/
torch.nn,Pytorch NN Module
Pytorch的NN模块里提供了各种好用的模块组件,便于我们后续的模型的构建。
示例:简单网络模型
继承于nn.Module,完成 init() 和forward()函数。
-
init()
模型相关初始化工作 - forward()
定义数据在模型中的处理流程
import torch.nn as nn
import torch.nn.functional as F
class SimpleNet(nn.Module):
def __init__(self):
super(SimpleNet, self).__init__()
self.fc1 = nn.Linear(2048, 256)
self.fc2 = nn.Linear(256, 64)
self.fc3 = nn.Linear(64, 2)
def forwar(self, x):
x = x.view(-1, 2048)
x = F.relu(self.fc1(x))
x = F.relu(self.fc2(x))
x = F.softmax(self.fc3(x), dim=1)
return x
模型设计一般流程:
- 模块定义,如线性连接,卷积核等
- 激活函数,如Relu,softmax等
- 模块间连接
- 输出选择
下面截图为torch.nn包所提供的各种方法函数
image.png
nn.Module is the base class for all NN building blocks.
从上面的截图,我们可以看出Pytorch提供了很多健壮稳定的神经网络层及激活函数。在实际应用中,我们都可快速调用这些层及函数进行模型结构开发。
训练模型
模型设计阶段主要有下面几个步骤:定义神经网络模块,参数,各个模块的连接。
在模型设计完成后,就是通过训练数据来训练模型,不断优化参数以提高模型的预测能力。
模型循环训练
损失函数
优化算法