目前,我有一些网络使用灰度图像进行分类 . 我想继续彩色(RGB)图像 .
在Tensorflow的CIFAR-10教程中,我对卷积内核的权重感到困惑 . 第一个卷积看起来像这样:
kernel = _variable_with_weight_decay('weights', shape=[5, 5, 3, 64],
stddev=1e-4, wd=0.0)
conv = tf.nn.conv2d(images, kernel, [1, 1, 1, 1], padding='SAME')
所以它是一个输入为3的卷积(每个颜色通道一个:红色,绿色和蓝色图像信息),它生成64个特征映射 .
但是,第二个卷积层输入64个特征映射:
kernel = _variable_with_weight_decay('weights', shape=[5, 5, 64, 64],
stddev=1e-4, wd=0.0)
conv = tf.nn.conv2d(norm1, kernel, [1, 1, 1, 1], padding='SAME')
...那么,这是如何处理颜色信息的呢?这是否意味着不同的颜色通道以某种方式在卷积层1的64个特征图上展开?
我认为转换层1为每个颜色通道生成64个特征映射,因此最终得到3 * 64 = 196个特征映射......但显然我错了 .
如何在转换层1中混合颜色信息?
1 回答
参见CuDNN描述中的等式3 here
基本上对于单个示例(
n
),单行(p
)和单列(q
),空间卷积的结果将是5x5x3
值的加权和 . 因此每次激活都将包含来自所有3种颜色的信息 .