小编L0K*_*KiZ的帖子

使用 PyTorch 实现一个简单的 ResNet 块

我正在尝试实现以下 ResNet 块,其中 ResNet 由具有两个卷积层和一个跳过连接的块组成。出于某种原因,它不会将跳过连接的输出(如果应用)或输入添加到卷积层的输出。

ResNet 模块具有:

  • 两个卷积层:

    • 3x3 内核
    • 无偏见条款
    • 两边填充一个像素
    • 每个卷积层后的 2d 批量归一化
  • 跳过连接:

    • 如果分辨率和通道数没有改变,只需复制输入。
    • 如果分辨率或通道数发生变化,跳过连接应该有一个卷积层:
      • 1x1 卷积无偏差
      • 随着步幅改变分辨率(可选)
      • 不同数量的输入通道和输出通道(可选)
      • 1x1 卷积层之后是 2d 批量归一化。
  • ReLU 非线性应用于第一个卷积层之后和块的末尾。

我的代码:

class Block(nn.Module):
    def __init__(self, in_channels, out_channels, stride=1):
        """
        Args:
          in_channels (int):  Number of input channels.
          out_channels (int): Number of output channels.
          stride (int):       Controls the stride.
        """
        super(Block, self).__init__()

        self.skip = nn.Sequential()

        if stride != 1 or in_channels != out_channels:
          self.skip = nn.Sequential(
            nn.Conv2d(in_channels=in_channels, out_channels=out_channels, kernel_size=1, stride=stride, bias=False),
            nn.BatchNorm2d(out_channels))
        else:
          self.skip …
Run Code Online (Sandbox Code Playgroud)

python-3.x deep-learning resnet pytorch

4
推荐指数
1
解决办法
4208
查看次数

标签 统计

deep-learning ×1

python-3.x ×1

pytorch ×1

resnet ×1