PyTorch学习笔记(5)–神经网络基本骨架nn.Module的使用
本博文是PyTorch的学习笔记,第5次内容记录,主要介绍神经网络基本骨架nn.Module的基本使用。
目录
1.nn.Module是什么
torcn.nn是专门为神经网络设计的模块化接口. nn构建于autograd之上,可以用来定义和运行神经网络。
nn.Module是nn中十分重要的类,包含网络各层的定义及forward方法,在用户自定义神经网络时,需要继承自nn.Module类。
在PyTorch官网中有关于torch.nn的详细情况介绍:torch.nn模块介绍。
具体情况如下图所示:
2.nn.Module的使用
2.1nn.Module的基本结构
在官网中,详细介绍了nn.Module的基本结构,现以containers为例,详细代码入下:
import torch.nn as nn
import torch.nn.functional as F
class Model(nn.Module): # Model类继承自nn.Module
def __init__(self): # 构造函数
super(Model, self).__init__() # 在构造函数中要调用Module的构造函数
self.conv1 = nn.Conv2d(1, 20, 5) # 卷积操作
self.conv2 = nn.Conv2d(20, 20, 5) # 卷积操作
def forward(self, x): # 前向传播函数
x = F.relu(self.conv1(x)) # 先卷积操作conv1,后非线性操作relu
return F.relu(self.conv2(x))
关于forward函数的细节如下所示:
2.2搭建自己的神经网络
现在尝试搭建自己的神经网络,创建一个名字为Test的类,代码如下:
# coding :UTF-8
# 文件功能: 代码实现nn.module模块基本使用的功能
# 开发人员: dpp
# 开发时间: 2021/8/15 11:18 下午
# 文件名称: nn_module.py
# 开发工具: PyCharm
import torch
from torch import nn
class Test(nn.Module):
def __init__(self):
super().__init__()
def forward(self, input):
output = input + 1
return output
test = Test()
x = torch.tensor(1.0)
output = test(x)
print(output)
在上述神经网络中创建了类Test,并实现将输入+1的操作,输出结果。代码运行效果如下所示:
在语句test = Test()
处设置断点,观察代码运行过程中各个变量的变化情况,如下所示:
3.学习小结
在本文中总结了神经网络基本骨架nn.Module的基本使用方法,并通过构建一个类Test介绍nn.Module的具体使用方法,在下一篇博文,将开始介绍神经网络的具体层。
关于nn.Module的更多细节可以参照博文:Pytorch nn.Module模块详解。