我为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?
现在使用灰度图像时仍然没有进展。
答案 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]))