TensorFlow 网络不训练?
TensorFlow network not training?
最近几天我在 TensorFlow 上度过了一段非常奇怪的时光,想不出 atm 出了什么问题。
我已经建立了这个网络:link。它是 TensorFlow 的 MNIST 示例的副本。
基本上,我所做的是将网络从拍摄 28x28x1 图像(MNIST 灰度)更改为 600x800x1 图像(一些图像是我自己拍摄的,网络摄像头具有相对干净的背景和一个位于不同位置的对象)。
我想做的是玩弄这样一个 CNN 并让它输出图像中对象的 x 位置。所以一个输出神经元。
但是,无论我怎样尝试,网络总是输出 1.0。甚至(当您查看代码末尾的测试部分时)当我将全 1、全 0 或全随机数输入网络时。
当然,由于我只有 21 张带标签的训练图片和 7 张带标签的测试图片,我预计性能会非常糟糕(因为 800x600 像素的图像对于神经网络来说是巨大的并且定位对象并不容易)。
...但我完全不知道为什么网络总是输出 1.0,即使它是胡说八道。有什么想法吗?
查看您的源代码,您的最终完全连接层似乎在 softmax 之前(the code you shared) reduces each example down to a single output class before computing the softmax. Since there is only one class for each example, the result of the tf.nn.softmax()
op (y_conv
) will be a batch_size x 1 matrix containing 1.0 in every element, and the tf.argmax()
中的 L.104 将包含每个元素的 0,因为只有一个值。类似地,将 tf.argmax()
应用于 y_train(这是一个 batch_size x 1 矩阵)将为每个元素产生 0,因此 "accuracy" 将为 100%。
要解决此问题,您可能应该 (i) 将最终全连接层的输出单元数量增加到 classes 的数量,以及 (ii) 对每一行进行编码 y_train
作为代表每个示例的真实 class 的 one-hot 向量。
最近几天我在 TensorFlow 上度过了一段非常奇怪的时光,想不出 atm 出了什么问题。
我已经建立了这个网络:link。它是 TensorFlow 的 MNIST 示例的副本。
基本上,我所做的是将网络从拍摄 28x28x1 图像(MNIST 灰度)更改为 600x800x1 图像(一些图像是我自己拍摄的,网络摄像头具有相对干净的背景和一个位于不同位置的对象)。
我想做的是玩弄这样一个 CNN 并让它输出图像中对象的 x 位置。所以一个输出神经元。
但是,无论我怎样尝试,网络总是输出 1.0。甚至(当您查看代码末尾的测试部分时)当我将全 1、全 0 或全随机数输入网络时。
当然,由于我只有 21 张带标签的训练图片和 7 张带标签的测试图片,我预计性能会非常糟糕(因为 800x600 像素的图像对于神经网络来说是巨大的并且定位对象并不容易)。
...但我完全不知道为什么网络总是输出 1.0,即使它是胡说八道。有什么想法吗?
查看您的源代码,您的最终完全连接层似乎在 softmax 之前(the code you shared) reduces each example down to a single output class before computing the softmax. Since there is only one class for each example, the result of the tf.nn.softmax()
op (y_conv
) will be a batch_size x 1 matrix containing 1.0 in every element, and the tf.argmax()
中的 L.104 将包含每个元素的 0,因为只有一个值。类似地,将 tf.argmax()
应用于 y_train(这是一个 batch_size x 1 矩阵)将为每个元素产生 0,因此 "accuracy" 将为 100%。
要解决此问题,您可能应该 (i) 将最终全连接层的输出单元数量增加到 classes 的数量,以及 (ii) 对每一行进行编码 y_train
作为代表每个示例的真实 class 的 one-hot 向量。