TensorFlow网络没有训练?

2024-10-01 09:30:22 发布

您现在位置:Python中文网/ 问答频道 /正文

最近几天,我和TensorFlow相处得很奇怪,我想不出atm机出了什么问题。在

我建立了这个网络:link。它是TensorFlow的MNIST示例的副本。在

基本上,我所做的,是将网络从拍摄28x28x1的图像(MNIST灰度)更改为600x800x1图像(一些图像是我自己拍摄的,背景相对干净,在不同位置有一个对象)。在

我想做的是玩这样一个CNN,让它输出图像中物体的x位置。所以只有一个输出神经元。在

但是,不管我做了什么,网络总是输出1.0。甚至(当你看代码末尾的测试部分时),当我把所有的1、0或所有随机数输入网络时。在

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

…但我完全不知道为什么网络总是输出1.0,即使它被胡说八道。有什么想法吗?在


Tags: 对象标记图像网络示例tensorflow副本link
1条回答
网友
1楼 · 发布于 2024-10-01 09:30:22

从源代码来看,在softmax(L.104 inthe code you shared)之前,您的最终完全连接层在计算softmax之前将每个示例简化为一个单个输出类。由于每个示例只有一个类,^{}操作(y_conv)的结果将是一个批处理大小x1矩阵,每个元素中包含1.0,其中的^{}将为每个元素包含0,因为只有一个值。类似地,将tf.argmax()应用于y_-train(批量大小x1矩阵)将为每个元素生成0,因此“准确度”将为100%。在

要解决这个问题,您可能应该(i)增加来自最终完全连接层的输出单元的数量,使之成为类的数量,并且(ii)将每一行y_train编码为一个热向量,表示每个示例的真实类。在

相关问题 更多 >