目前我有一些网络使用灰度图像进行分类。我想继续处理彩色 (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')
所以它是一个 5x5
卷积,输入为 3(每个颜色 channel 一个:红色、绿色和蓝色图像信息),它生成 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')
...那么,这是如何处理颜色信息的呢?这是否意味着不同的颜色 channel 以某种方式传播在卷积层 1 的 64 个特征图上?
我以为第 1 层卷积层为每个颜色 channel 生成 64 个特征图,因此最终得到 3 * 64 = 196 个特征图……但显然我错了。
conv 层 1 中的颜色信息是如何混合的?
最佳答案
参见 CuDNN 描述中的等式 3 here
基本上是针对单例(n
),单行(p
)单列(q
),空间卷积的结果将是 5x5x3
值的加权和。因此每次激活都将包含来自所有 3 种颜色的信息。
关于python - 彩色图像卷积核的 tensorflow 权重?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35420275/