首先,我们来看一段代码分析,nn.Module的整体用法
简单粗暴上代码:
import torch
from torch import nn
class Example(nn.Module):
def __init__(self):
super().__init__()
def forward(self,input):
output = input + 1
return output
if __name__ == "__main__":
example = Example()
input = torch.tensor(1)
output = example(input)
print(output)
结果:
- 以下是个人理解,如有不正确请指教!
从上述程序中可以分析得出Pytorch
继承了nn.Moudle
的类使用方式:
- 需要在
class Example
中继承nn.module
- 接着,需要一个
__init__
函数来定义所需的变量,当定义example
及这句example = Example()
时便是调用__init__
函数 - 当具体创建
example
及output=example(input)
时,便是调用Example
类中的forward
函数,在卷积神经网络来说就是正向传播
接着,我们来看一个真正的运用在神经网络中nn.Module
,我们定义一个简单的卷积神经网络
简单粗暴上代码:(官网的代码,但是最后的forward
函数,官网写得对我不是特别友好,我改成了我常用的形式)
官方代码:
我的代码:
import torch
from torch import nn
import torch.nn.functional as F
class Module(nn.Module):
def __init__(self):
super(Module, self).__init__()
self.conv1 = nn.Conv2d(1, 20, 5)
self.conv2 = nn.Conv2d(20, 20, 5)
def forward(self, x):
x = self.conv1(x)
x = F.relu(x)
x = self.conv2(x)
x = F.relu(x)
return x
只是,将第一段代码的变量由数字换成了卷积,其实可以很容易的理解。
上一章 7.初识Pytorch使用Dataloader
下一章 9.初识Pytorch使用卷积层并对其进行可视化