[Bug集合]Rank mismatch: Rank of labels (received 2) should equal rank of logits minus 1 (received 2)

在使用tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels)语句时产生。
原因是logits和labels在使用时有labels应该少一维的限制。
比如一个tensorflow的分类问题,
logits应该是batch×classes的一个矩阵,classes为类别数量
labels应该是长batch的一个数组
当logits判断图片为某一类时,对应classes的位置为1


例子,比如猫狗大战吧。
当你一批次训练10张图片时,batch为10,猫狗总共两种分类。
logits就应该是类似这样的一个10×2的矩阵:
[
0 1
1 0
0 1
0 1
0 1
1 0
1 0
1 0
1 0
0 1
]
10是10张图片, 每行第一个位置如果为1,那么这一张图片是狗,每行第二个位置如果为1,那么这一张图片是猫。
而此时的label应该是一个这样的一维矩阵:
[2 1 2 2 2 1 1 1 1 2]
logits和label满足这种形式时使用tf.nn.sparse_softmax_cross_entropy_with_logits(logits, labels)语句是正确的。
我一开始把两个都弄成二维格式就出现了如上错误。

猜你喜欢

转载自blog.csdn.net/unlimitedai/article/details/84103069