目录
1. 基于Module构建自己的网络
torch.nn.Module是所有神经网络模块的基类,如何定义自已的网络:
- 由于 Module 是神经网络模块的基类,自己的模型应该要继承这个类
- 要实现 torch.nn.Module 中的forward函数,从而进行网络的前向传播
- 一般把网络中具有可学习参数的层放在构造函数__init__()中
- 把不具有可学习参数的层(如ReLU)放在forward中,并通过nn.functional来代替
import torch.nn as nn
import torch.nn.functional as F
class Model(nn.Module): # 继承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): # 实现forward函数
# 在forward中直接使用torch.nn.functional.relu()函数
x = F.relu(self.conv1(x))
return F.relu(self.conv2(x))
2. Module的初始化变量
nn.Module 类内置了一些初始化变量。包括在模块 forward、 backward 和权重加载等时候