Pytorch 之torch.nn初探 torch.nn.Module与线性--Linear layers

初探 torch.nn.Module

神经网络可以使用torch.nn包构建。它提供了几乎所有与神经网络相关的功能,例如:

  • 线性图层 nn.Linear,nn.Bilinear
  • 卷积层 nn.Conv1d,nn.Conv2d,nn.Conv3d,nn.ConvTranspose2d
  • 非线性 nn.Sigmoid,nn.Tanh,nn.ReLU,nn.LeakyReLU
  • 池化层 nn.MaxPool1d,nn.AveragePool2d
  • Recurrent网络 nn.LSTM,nn.GRU
  • 标准化 nn.BatchNorm2d
  • Dropout nn.Dropout,nn.Dropout2d
  • Embedding - nn.Embedding
  • 损失函数 nn.MSELoss,nn.CrossEntropyLoss,nn.NLLLoss

这些类的实例将具有一个内置的__call__函数,可通过图层运行输入。

任务描述

本关任务:

本关要求利用nn.Linear()声明一个线性模型 l,并构建一个变量 net 由三个l序列构成。

相关知识

torch.nn.Module是所有神经网络模块的基类,用户自定义的神经网络模型同样继承自这个类。它定义了训练神经网络需要的所有基础方法,并且是可以序列化的抽象类。

torch.nn.Module模块还可以包含其他模块,允许将它们嵌套在树形结构中。

torch.nn.Module

import torch.nn as nn
import torch.nn.functional as F

class Model(nn.Module):
    def __init__(self):
        super(Model, self).__init__()
        self.conv1 = nn.Conv2d(1, 20, 5)
        self.conv2 = nn.Conv2d(20, 20, 5)

    def forward(self, x):
       x = F.relu(self.conv1(x))
       return F.relu(self.conv2(x))

以这种方式分配的子模块将被注册,并且在调用.cuda()等时也将转换它们的参数。

方法

  • train(mode=True) 将模型设置为训练状态 这只对诸如Dro

你可能感兴趣的:(人工智能,机器学习,pytorch)