官网地址:
Containers:神经网络的骨架
Convolution Layers:卷积层
Pooling layers:池化层
Padding Layers:Padding
Non-linear Activations:非线性激活
Normalization Layers:正则化层
还有其他函数,详情可以看官方文档。以上这些函数构成了神经网络的基本操作。
Containers一共有六个模块:
__init__
初始化,其中super(Model,self).__init__()
指的是对父类进行初始化,后面的部分是根据自己构建的神经网络个性化定制的。之后我们使用forword
函数对输入数据进行计算,也可以这么理解:对于一个神经网络,首先输入数据-->使用forword函数计算数据-->输出数据,这个过程也叫前向传播。import torch.nn as nn
import torch.nn.functional as F
class Model(nn.Module):
def __init__(self):
super().__init__()
self.conv1 = nn.Conv2d(1, 20, 5)
self.conv2 = nn.Conv2d(20, 20, 5)
def forward(self, x):
x = F.relu(self.conv1(x))
return F.relu(self.conv2(x))
Sequential
ModuleList
ModuleDict
ParameterList
ParameterDict
一些小技巧:在写__init__
的super
函数时,pycharm点击下面这个按钮就可以自动补全:
下面构建一个很简单的神经网络,具体作用就是把输入数据+1然后返回,之后调用这个神经网络:
from torch import nn
import torch
#构建一个叫Demo的神经网络
class Demo(nn.Module):
def __init__(self):
super().__init__()
def forward(self,input):
output=input+1 #对输入神经网络的数据+1,然后返回
return output
#调用神经网络
demo=Demo()
x=torch.tensor(1.0) #输入神经网络的数据
output=demo(x)
print(output) #输出神经网络的数据
[Run] tensor(2.)
为了更好地说明上面代码的运行过程,把debug打到第14行的demo=Demo()
代码上,并点击Step into My Code:
之后一直点击Step into My Code,就可以看到代码的运行过程如下:
在调用demo=Demo()
后,首先使用super().__init__()
对\(nn.Module\)进行初始化
然后设定输入值x
,并使用demo(x)
将该值传入到forword
函数中
forword
函数将该值进行加一,并返回output
最后将返回的output输出