Tensorflow - 卷积网:灰度与黑/白训练

时间:2016-09-14 10:10:01

标签: network-programming neural-network tensorflow classification conv-neural-network

我为cnn采用了mnist示例。 https://www.tensorflow.org/versions/r0.10/tutorials/mnist/pros/index.html 我稍微改了一下来处理我自己的28x28图像。我有2个班,一个图像是眼睛或墙壁。

我注意到rgb和灰度图像没有导致任何训练改进,精度恒定为0.5。 虽然转换为黑白图像(使用image.convert(' 1'))的速度非常快。在批量大小为20的200次迭代之后,精度大约为0.9。

灰度图像不会导致任何改善的原因可能是什么?

可以采取哪些措施来改善他们的表现?

编辑1:我只是使用TensorBoard来查看正在发生的事情,我发现当使用灰度图像进行训练时,交叉熵会一直返回NaN ..

编辑2:我使用的交叉熵的计算很糟糕。 Tensorflow NaN bug?

现在使用灰度图像时仍然没有进展。

1 个答案:

答案 0 :(得分:0)

正如我在编辑中所提到的,事实证明交叉熵没有正确计算。请小心使用示例中的代码,它们可能仅适用于完整的示例案例。

Tensorflow NaN bug?的第二个问题终于解决了我的问题:

with tf.name_scope('cross_entropy'):
    diff = y_ * (tf.nn.log_softmax(y_conv))
    with tf.name_scope('total'):
        cross_entropy = tf.reduce_mean(-tf.reduce_sum(diff, reduction_indices=[1]))
    tf.scalar_summary('cross entropy', cross_entropy)

而不是

y_conv=tf.nn.softmax(...)
cross_entropy = tf.reduce_mean(-tf.reduce_sum(y_ * tf.log(y_conv), reduction_indices=[1]))