计算机

网络层类

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

读完了,有什么想法?

阅读已保存的问答示例,并循着引用回到原文。

查看公开问答示例
— 本文完 — 返回文章列表