我不确定这个错误意味着什么。当我尝试计算acc
:
acc = accuracy.eval(feed_dict = {x: batch_images, y: batch_labels, keep_prob: 1.0})
我尝试过查找解决方案,但我无法在网上找到任何解决方案。关于导致我的错误的任何想法?
答案 0 :(得分:2)
我有一个类似的错误,但是对我来说,问题是我试图在1维向量上使用argmax。因此,标签的形状为(50,),并且在评估时我试图对此做一个tf.argmax(y,1)。解决方案参考为Tensorflow: I get something wrong in accuracy
答案 1 :(得分:1)
生成此错误的源代码如下:
OP_REQUIRES(context, axis >= 0 && axis < input_dims,
errors::InvalidArgument("Expected dimension in the range [",
-input_dims, ", ", input_dims,
"), but got ", dim));
请注意,axis
必须小于 input_dims
,不小于或等于。
这符合消息中的语法[-1,1)
:[
表示包含值(使-1
有效),而)
表示独占值(put {} 1
本身超出范围。)
答案 2 :(得分:1)
对于要进行 Tensorflow服务或估算器加载的人员,发生此错误是因为功能字典中的值需要成批分配。
data = {
"signature_name": "predict",
"inputs": {k:[v] for k,v in inputs.items()}
}
答案 3 :(得分:0)
对于
之类的代码tf.equal(tf.argmax(y, 1), tf.argmax(labels, 1))
通常在计算精度时使用,可以更改为
tf.equal(tf.argmax(y, -1), tf.argmax(labels, -1))
根据源代码:
// tensorflow/compiler/tf2xla/kernels/index_ops_cpu.cc:58
OP_REQUIRES(ctx, axis >= 0 && axis < input_dims,
errors::InvalidArgument("Expected dimension in the range [",
-input_dims, ", ", input_dims,
"), but got ", dim));
答案 4 :(得分:-1)
我解决了这个问题。 检查batch_labels的表达方式
# if use one hot code use
# y_true_cls = tf.argmax(y_true, dimension=1)
# if not one hot code use
y_true_cls = y_true
希望能有所帮助