Python TensorFlow索引无效(超出范围)

Python TensorFlow索引无效(超出范围),python,tensorflow,Python,Tensorflow,您好,我目前正在尝试使用自己的图像数据运行TensorFlow。 但是当我试图运行这些函数时,它崩溃了:它来自mnist.py def loss_fn(logits, labels): batch_size = tf.size(labels) labels = tf.expand_dims(labels, 1) indices = tf.expand_dims(tf.range(0, batch_size, 1), 1) concated = tf.concat(

您好,我目前正在尝试使用自己的图像数据运行TensorFlow。 但是当我试图运行这些函数时,它崩溃了:它来自mnist.py

def loss_fn(logits, labels):
    batch_size = tf.size(labels)
    labels = tf.expand_dims(labels, 1)
    indices = tf.expand_dims(tf.range(0, batch_size, 1), 1)
    concated = tf.concat(1, [indices, labels])
    onehot_labels = tf.sparse_to_dense(
             concated, tf.pack([batch_size, NUM_CLASSES]), 1.0, 0.0)
    cross_entropy = tf.nn.softmax_cross_entropy_with_logits(logits,
                     onehot_labels,name='xentropy')
    loss = tf.reduce_mean(cross_entropy, name='xentropy_mean')
    return loss
出现此错误时:

Compute status: Invalid argument: Indices are not valid (out of bounds).  Shape: dim { size: 100 } dim { size: 447 }
数字100是我的批量大小,447是我的班级数量

我也试图像这里一样解决这个问题 将索引行更改为此行:

indices = tf.expand_dims(tf.range(0, batch_size, 1), 1)
没有解决我的问题。
有人有想法吗?

我也有这个错误。我意识到了我的错误。如果有10个类,则标签值的范围应为0-9(含0-9)。该错误在与dataset一起使用的TensorFlow CIFAR10示例中重现。请参阅下面的问题和答案


您是否可以分享错误消息周围的一些上下文,包括失败的机头的名称?另外,您是否可以打印
logits.get\u shape()
标签。get\u shape()
以了解这些张量的预期形状?@mrry Hi。我试过你的建议了。我的标签是空的。于是我开始调试。然后我查看了我的.tfrecords文件,发现标签和深度字段中的值没有写入。我使用了这个脚本中的convert_to()函数:@mrry首先,我想在这个脚本的第56行(dat.shape[0],num_示例)中有一个键入错误。我认为应该是(images.shape[0],num_示例)。第二件事是深度和标签值在.tfrecords文件中是空的。只有将第69行和第70行更改为[code]('depth':_bytes_feature(str(depth)),'label':_bytes_feature(label)),我才能在.tfrecords文件中看到传递的深度和标签值。在这些改变之后,我又犯了一个错误,但如果我自己不能解决这个问题,我会发布一个新问题。谢谢你的提示。你应该接受你的评论,解释你是如何解决这个问题的,并给出答案。我知道它没有让你的代码工作,但它被认为是一个有效的答案在这里。通过将其作为答案发布,它将帮助其他人,因为并非所有人都在评论中寻找答案。