Mon*_*eck 6 convolution neural-network channels conv-neural-network vgg-net
我正在看这个图层的打印输出。我意识到,这显示了输入/输出,但与如何处理 RGB 通道无关。
如果您查看 block1_conv1,它会显示“Conv2D”。但是如果输入是 224 x 224 x 3,那么这不是 2D。
我的更大、更广泛的问题是,在整个训练这样的模型的过程中如何处理 3 个通道输入(我认为它是 VGG16)。RGB 通道是否在某个时刻组合(相加或连接)?何时何地?为此需要一些独特的过滤器吗?或者模型是否从头到尾分别跨越不同的通道/颜色表示?
2D 卷积的“2D”部分不是指卷积输入的维度,也不是滤波器本身的维度,而是指允许滤波器移动的空间(仅限 2 个方向)。另一种思考方式是,每个 RGB 通道分别具有自己的 2D 阵列滤波器,并且输出添加在最后。
模型是否从头到尾分别运行不同的通道/颜色表示?
它实际上在每个渠道上分别执行此操作。例如,第一Conv2D层分别接收 3 224x224 层中的每一层,然后对每个层应用不同的 2D 阵列滤波器。但这并不是跨所有模型层的端到端,仅在卷积步骤期间的层内。
但是,你可能会问,每个通道有 64 个卷积滤波器,那么为什么3 个通道的输出3*64 = 192中没有通道呢?Conv2D这会提示您的问题
RGB 通道是否在某个点进行组合(求和或串联)?
答案是:是的。将卷积滤波器分别应用于每个层后,三个通道中每个通道的值都会相加,如果您已指定,还会添加偏差。请参见下图(来自Dive Into Deep Learning,位于CC BY-SA 4.0下):
这样做的原因(添加了单独的通道层)是每个通道实际上没有 3 个单独的 2D 阵列滤波器;从技术上讲,只有 1 个 3D 阵列滤波器,只能在两个方向上移动。你可以把它想象成一个汉堡包:一个通道(小圆面包)有一个 2D 阵列过滤器,另一个通道(生菜)有另一个,等等。但所有层都堆叠起来并作为一个整体发挥作用,因此过滤器权重会立即添加在一起。不需要为此添加特殊的权重或过滤器,因为权重在卷积步骤中已经存在(这只是将两个拟合参数相乘,也可能是一个)。
| 归档时间: |
|
| 查看次数: |
1158 次 |
| 最近记录: |