网络层类
torch.nn.Module
Pytorch 中所有网络层的基类。
方法
register_buffer 将一些参数注册成为模型的静态参数(常量,即超参数),这些参数会在 save 时保存,但在网络训练过程中它们的值不会更新。
注册用法为 self.register_buffer('name', value),注册后可以使用 self.name 调用该参数。
self.register_buffer('betas', torch.Tenser(betas))
自动追踪
网络层
Linear
基础的全连接层。
输入形状为 (batch_size, num_input) 和 (num_input) 均可。
卷积层
Conv2D
最常用的卷积层。
Conv2D 要求输入的形状一定为 (batch_size, num_channels, height, width),也即一定为四维张量。即使网络只需要处理一张图片,也需要指定 batch_size = 1,此时需要将输入 reshape 成形状为 (1, num_channels, height, width) 的四维张量。
嵌入
nn.Embedding:查表,将一个整数映射为一个向量
激活函数
ReLU
保持张量形状不变,逐一地用 ReLU 函数作用。
复合型
Sequential
nn.Sequential 可以将结构较为简单的顺序神经网络逐层连起来,并依次计算。
在 nn.Sequential 中,其自带的前向计算 forward 方法会按照模块的顺序依次调用每个模块的 forward 方法,将前一个模块的输出作为输入传递给下一个模块,从而计算最终的输出。
Sequential 经常用于 MLP 的创建。
from torch import nn
my_mlp = nn.Sequential(
nn.Linear(num_states, 128),
nn.ReLU(),
nn.Linear(128, 128),
nn.ReLU(),
nn.Linear(128, num_actions)
)
ModuleList
模块的列表(就是将多个网络层放在一起),PyTorch 会对每个网络层都进行初始化。
可以通过下标索引的方式访问任意一个模块。
该类不包含默认的 forward 方法。
方法(同 Python 的 list):
append:在后面添加一个网络insert:在某位置后面插入一个地方extend:拼接两个列表
BEYOND THE ARTICLE
读完了,有什么想法?
阅读已保存的问答示例,并循着引用回到原文。
— 本文完 — 返回文章列表