softmax_cross_entropy
我花了几个小时试图系统地弄清楚为什么我在运行这个模型时失去了0。
最初我认为这是因为我的数据有问题。但是我在调整大小后查看了数据并且图像看起来很好。
然后我尝试了一些不同的损失函数,因为我想我可能误解了张量流函数 [[0.06388957]
[0. ]
[0.16969752]
[0.24913025]
[0.09961276]]
的作用,但这并没有解决任何问题。
我尝试过只运行' logits'部分看看输出是什么。这只是一个小样本,数字对我来说似乎很好:
softmax_cross_entropy
当然,apply
函数应该能够计算这个损失,因为相应的标签是0或1?我不确定我是否遗漏了什么。任何帮助将不胜感激。
答案 0 :(得分:0)
作为documented:
logits
和labels
必须具有相同的形状,例如[batch_size, num_classes]
和相同的dtype(float16
,float32
或float64
)。
由于您提到您的标签是“[Batch_size,1] one_hot vector”,我认为您的logits
和labels
都是[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。但是支持更高的尺寸。