zoukankan      html  css  js  c++  java
  • 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层:

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

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

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

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

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

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

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

    2. 激活函数nn.ReLU()

  • 相关阅读:
    MongoDB_聚合
    MongoDB_基本操作
    MongoDB_"Error parsing YAML config file: yaml-cpp: error at line 3, column 9: illegal map value"解决方法
    MongoDB_安装
    beautifulsoup模块
    python发送邮件
    selenium常用操作
    selenium元素定位
    requests模块的高级用法
    继承
  • 原文地址:https://www.cnblogs.com/lzida9223/p/10536186.html
Copyright © 2011-2022 走看看