最近几天,我和TensorFlow相处得很奇怪,我想不出atm机出了什么问题。在
我建立了这个网络:link。它是TensorFlow的MNIST示例的副本。在
基本上,我所做的,是将网络从拍摄28x28x1的图像(MNIST灰度)更改为600x800x1图像(一些图像是我自己拍摄的,背景相对干净,在不同位置有一个对象)。在
我想做的是玩这样一个CNN,让它输出图像中物体的x位置。所以只有一个输出神经元。在
但是,不管我做了什么,网络总是输出1.0。甚至(当你看代码末尾的测试部分时),当我把所有的1、0或所有随机数输入网络时。在
当然,由于我只有21个标记的训练图片和7个标记的测试图片,我预计性能会非常糟糕(因为800x600像素的图像对于神经网络来说是巨大的,而且定位一个对象并不容易)。在
…但我完全不知道为什么网络总是输出1.0,即使它被胡说八道。有什么想法吗?在
从源代码来看,在softmax(L.104 inthe code you shared)之前,您的最终完全连接层在计算softmax之前将每个示例简化为一个单个输出类。由于每个示例只有一个类,^{} 操作(} 将为每个元素包含0,因为只有一个值。类似地,将
y_conv
)的结果将是一个批处理大小x1矩阵,每个元素中包含1.0,其中的^{tf.argmax()
应用于y_-train(批量大小x1矩阵)将为每个元素生成0,因此“准确度”将为100%。在要解决这个问题,您可能应该(i)增加来自最终完全连接层的输出单元的数量,使之成为类的数量,并且(ii)将每一行
y_train
编码为一个热向量,表示每个示例的真实类。在相关问题 更多 >
编程相关推荐