Pytorch袖珍手册之五

pytorch pocket reference

原书下载地址:
我用阿里云盘分享了「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

模型设计一般流程

  1. 模块定义,如线性连接,卷积核等
  2. 激活函数,如Relu,softmax等
  3. 模块间连接
  4. 输出选择

下面截图为torch.nn包所提供的各种方法函数

image.png

image.png

nn.Module is the base class for all NN building blocks.

image.png

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

从上面的截图,我们可以看出Pytorch提供了很多健壮稳定的神经网络层及激活函数。在实际应用中,我们都可快速调用这些层及函数进行模型结构开发。

训练模型

模型设计阶段主要有下面几个步骤:定义神经网络模块,参数,各个模块的连接。
在模型设计完成后,就是通过训练数据来训练模型,不断优化参数以提高模型的预测能力。

模型循环训练

损失函数

优化算法

验证模型

测试模型

模型部署

模型保存

你可能感兴趣的:(Pytorch袖珍手册之五)