首页 文章

TensorFlow网络没有培训?

提问于
浏览
5

我和TensorFlow在最后几天度过了一段非常奇怪的时光,并且无法想象atm会出现什么问题 .

我 Build 了这个网络:link . 它是TensorFlow的MNIST示例的副本 .

基本上,我所做的是改变网络,从28x28x1图像(MNIST灰度)到600x800x1图像(我自己拍摄的一些图像,背景相对干净的网络摄像头和不同位置的一个对象) .

我想要做的就是玩这样的CNN并让它输出图像中对象的x位置 . 所以单输出神经元 .

但是,无论我尝试什么,网络总是输出1.0 . 甚至(当你在代码末尾看我的测试部分时)我将所有的,全部为零或所有随机数输入网络 .

当然,由于我只有21个标记的训练和7个标记的测试图片,我预计性能非常差(因为800x600像素图像对于神经网络来说是巨大的并且定位对象并不容易) .

...但我完全不知道为什么网络总是输出1.0,即使它是无意义的 . 有任何想法吗?

1 回答

  • 6

    查看源代码,似乎在softmax之前的最终完全连接层(the code you shared中的L.104)在计算softmax之前将每个示例减少到 single output class . 由于每个示例只有一个类,tf.nn.softmax() op( y_conv )的结果将是每个元素中包含1.0的batch_size x 1矩阵,并且tf.argmax()将包含每个元素的0,因为只有一个值 . 类似地,将 tf.argmax() 应用于y_train(这是一个batch_size x 1矩阵)将为每个元素生成0,因此"accuracy"将为100% .

    要解决这个问题,你应该(i)将最终完全连接层的输出单元数增加为类的数量,并且(ii)将每一行 y_train 编码为表示每个示例的真实类的单热矢量 .

相关问题