我从张量流中调整cifar10网络,以解决我自己的分类问题.我已经训练了网络,现在我尝试使用cifar10_eval.py评估训练模型
top_k_op = tf.nn.in_top_k(logits, labels, 1)
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误.经过进一步调查,目标指数在2,3到4之间变化
tensorflow.python.framework.errors.InvalidArgumentError: targets[3] is out of range
Run Code Online (Sandbox Code Playgroud)
到现在为止,我知道我的标签 - Tensor出了问题.它是一个int32-Tensor,形状(50,)如下所示.
labels = {Tensor} Tensor("batch_processing/Reshape_1:0", shape=(50,), dtype=int32, device=/device:CPU:0)
Run Code Online (Sandbox Code Playgroud)
我的数据集只有2个类/标签.也许这可能是问题所在.有谁知道,问题是什么?
总结一下,函数tf.nn.in_top_k(predictions, targets, k)(参见doc)有参数:
[batch_size, num_classes],类型float32[batch_size],type int32或int64InvalidArgumentError: targets[i] is out of range当元素targets[i]超出范围时,该函数会引发错误predictions[i].
例如,有2个类(num_classes=2)和targets=[1, 3].使用这些目标,您将看到一个错误,InvalidArgumentError: targets[1] is out of range因为targets[1] = 3超出范围predictions[1]只有形状2.
要检查您labels是否正确,您可以打印最大值:
labels = ...
labels_max = tf.reduce_max(labels)
sess = tf.Session()
print sess.run(labels_max)
Run Code Online (Sandbox Code Playgroud)
如果打印的值优于num_classes,则表示您遇到问题.
| 归档时间: |
|
| 查看次数: |
3451 次 |
| 最近记录: |