TensorFlow模型获得零损失

时间:2018-04-19 22:20:20

标签: python tensorflow cross-entropy convolutional-neural-network

softmax_cross_entropy

我花了几个小时试图系统地弄清楚为什么我在运行这个模型时失去了0。

  • 功能=每张图片的文件位置列表(例如[' \ data \ train \ cat.0.jpg',/ data \ train \ cat.1.jpg])
  • 标签= [Batch_size,1] one_hot vector

最初我认为这是因为我的数据有问题。但是我在调​​整大小后查看了数据并且图像看起来很好。

然后我尝试了一些不同的损失函数,因为我想我可能误解了张量流函数 [[0.06388957] [0. ] [0.16969752] [0.24913025] [0.09961276]] 的作用,但这并没有解决任何问题。

我尝试过只运行' logits'部分看看输出是什么。这只是一个小样本,数字对我来说似乎很好:

softmax_cross_entropy

当然,apply函数应该能够计算这个损失,因为相应的标签是0或1?我不确定我是否遗漏了什么。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

作为documented

  

logitslabels必须具有相同的形状,例如[batch_size, num_classes]和相同的dtype(float16float32float64)。

由于您提到您的标签是“[Batch_size,1] one_hot vector”,我认为您的logitslabels都是[Batch_size,1]形状。这肯定会导致零损失。从概念上讲,你只有一个班级(num_classes=1)而你的错误(loss=0)。

至少对你labels来说,你应该改变它:tf.one_hot(indices=labels, depth=num_classes)。您的预测logits也应该有[batch_size, num_classes]形状输出。

或者,您可以使用sparse_softmax_cross_entropy_with_logits,其中:

  

一个常见的用例是使用shape [batch_size,num_classes]和shape [batch_size]标签的logits。但是支持更高的尺寸。