dan*_*451 5 python neural-network deep-learning conv-neural-network tensorflow
我和TensorFlow在最后几天度过了一段非常奇怪的时光,并且无法想象atm会出现什么问题.
我建立了这个网络:链接.它是TensorFlow的MNIST示例的副本.
基本上,我所做的是改变网络,从28x28x1图像(MNIST灰度)到600x800x1图像(我自己拍摄的一些图像,背景相对干净的网络摄像头和不同位置的一个对象).
我想要做的就是玩这样的CNN并让它输出图像中对象的x位置.所以单输出神经元.
但是,无论我尝试什么,网络总是输出1.0.甚至(当你在代码末尾看我的测试部分时)我将所有的,全部为零或所有随机数输入网络.
当然,由于我只有21个标记的训练和7个标记的测试图片,我预计性能非常差(因为800x600像素图像对于神经网络来说是巨大的并且定位对象并不容易).
...但我完全不知道为什么网络总是输出1.0,即使它是无意义的.有任何想法吗?
查看源代码,似乎在softmax之前的最终完全连接层(您共享的代码中的 L.104 )在计算softmax之前将每个示例缩减为单个输出类.由于每个示例只有一个类,因此tf.nn.softmax()op(y_conv)的结果将是每个元素中包含1.0的batch_size x 1矩阵,并且每个元素tf.argmax()的结果将包含0,因为只有一个值.类似地,应用于tf.argmax()y_train(这是一个batch_size x 1矩阵)将为每个元素产生0,因此"准确度"将为100%.
为了解决这个问题,你应该(i)将最终完全连接层的输出单元数增加为类的数量,并且(ii)将每一行编码y_train为表示每个例子的真实类的单热矢量.
| 归档时间: |
|
| 查看次数: |
3885 次 |
| 最近记录: |