ValueError: Rank mismatch: Rank of labels (received 2) should equal rank of logits minus 1 (received

多分类任务时, tf.nn.sparse_softmax_cross_entropy_with_logits

for batchTrain in nextBatch(trainX, trainlabels, config.batchSize):
    print(batchTrain[0]) # 32 *type_num 
    print(batchTrain[1]) # 32 * 1
    # print(len(batchTrain[0]))
    print(type(batchTrain[1]))
    loss= tf.nn.sparse_softmax_cross_entropy_with_logits(labels=batchTrain[1], logits=batchTrain[0])
    # loss = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=tf.reshape(batchTrain[1],[-1]), logits=batchTrain[0])
    print(loss)
    break

其中
batchTrain[0]维度为32*type_num

[[0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 ...
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]
 [0. 0. 0. ... 0. 0. 0.]]

batchTrain[1]的维度为32*1

[[8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]
 [8]]

求损失函数时,labels应比logits少一个维度,上面两者维度都为2

 loss= tf.nn.sparse_softmax_cross_entropy_with_logits(labels=batchTrain[1], logits=batchTrain[0])

改为

loss = tf.nn.sparse_softmax_cross_entropy_with_logits(labels=tf.reshape(batchTrain[1],[-1]), logits=batchTrain[0])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值