当前位置:   article > 正文

pytorch中torch.nn构建神经网络的不同层的含义

pytorch中torch.nn构建神经网络的不同层的含义

主要是参考这里,写的很好PyTorch 入门实战(四)——利用Torch.nn构建卷积神经网络

  1. 卷积层nn.Con2d()
    常用参数
  • in_channels:输入通道数
  • out_channels:输出通道数
  • kernel_size:滤波器(卷积核)大小,宽和高相等的卷积核可以用一个数字表示,例如kernel_size=3;否则用不同数字表示,例如kernel_size=(5,3)
  • stride : 表示滤波器滑动的步长
  • padding:是否进行零填充,padding=0表示四周不进行零填充,padding=1表示四周进行1个像素点的零填充
  • bias:默认为True,表示使用偏置

举个例子,构建一个输入通道为3,输出通道为64,卷积核大小为3x3,四周进行1个像素点的零填充的conv1层:

  1. class testNet(nn.Module):
  2. def __init__(self, num_classes=10):
  3. super(testNet, self).__init__()
  4. #定义自己的网络
  5. self.conv1 = nn.Conv2d(3,64,kernel_size=3,padding=1)
  6. def forward(self,x):
  7. #定义自己的前向传播方式
  8. out = self.conv1(x)
  9. return out

这里卷积层的输入维度应该是 (Batch, Number Channels, height, width).

  1. 池化层
    最大值池化nn.MaxPool2d()和均值池化nn.AvgPool2d()
    常用参数
    kernel_size、stride、padding在卷积层部分定义和这里一样

举个例子,构建一个卷积核大小为2x2,步长为2的pool1层,并且加入到forward中:

  1. class testNet(nn.Module):
  2. def __init__(self, num_classes=10):
  3. super(testNet, self).__init__()
  4. #定义自己的网络
  5. self.conv1 = nn.Conv2d(3,64,kernel_size=3,padding=1)
  6. self.pool1 = nn.MaxPool2d(kernel_size=2,stride=2)
  7. def forward(self,x):
  8. #定义自己的前向传播方式
  9. out = self.conv1(x)
  10. out = self.pool1(out)
  11. return out

事实上,池化层可以不必紧跟在卷积层之后,中间可以加入激活层和BatchNorm层,甚至可以在多个卷积操作后添加池化操作

  1. 批标准化层nn.BatchNorm2d()

  2. 激活函数nn.ReLU()

转载于:https://www.cnblogs.com/lzida9223/p/10536186.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/691136
推荐阅读
相关标签
  

闽ICP备14008679号