对CNN中跳跃层的实现感到困惑
Confused about implementation of skip layers in CNN
我在阅读有关 AlphaGo Zero 的网络结构的文章时发现了这个备忘单:
我很难理解跳过连接如何在维度上工作。
具体来说,似乎每个残差层都以其接收到的输入的 2 个堆叠副本结束。这不会导致输入大小随着网络深度呈指数增长吗?
是否可以通过更改 conv2d 过滤器的输出通道大小来避免这种情况?我看到 in_C 和 out_C 在 pytorch 中不必相同,但我还不够了解这些值不同的含义。
使用跳过连接,您确实可以将每个连接的通道数增加一倍。当您将通道连接在一起时就是这种情况。但是,如果您控制输出通道的数量(您称为 out_C
),它不一定必须呈指数增长。
例如,如果您有一个跳过连接,总共提供 n
个通道,并且卷积层获得 in_C
个通道作为输入。然后您也可以将 out_C
定义为 n
,这样串联后的通道数等于 2*n
。最终,您决定每个卷积的输出通道数量,这完全取决于网络容量以及它能够学习多少。
我在阅读有关 AlphaGo Zero 的网络结构的文章时发现了这个备忘单:
我很难理解跳过连接如何在维度上工作。
具体来说,似乎每个残差层都以其接收到的输入的 2 个堆叠副本结束。这不会导致输入大小随着网络深度呈指数增长吗?
是否可以通过更改 conv2d 过滤器的输出通道大小来避免这种情况?我看到 in_C 和 out_C 在 pytorch 中不必相同,但我还不够了解这些值不同的含义。
使用跳过连接,您确实可以将每个连接的通道数增加一倍。当您将通道连接在一起时就是这种情况。但是,如果您控制输出通道的数量(您称为 out_C
),它不一定必须呈指数增长。
例如,如果您有一个跳过连接,总共提供 n
个通道,并且卷积层获得 in_C
个通道作为输入。然后您也可以将 out_C
定义为 n
,这样串联后的通道数等于 2*n
。最终,您决定每个卷积的输出通道数量,这完全取决于网络容量以及它能够学习多少。