InvalidArgumentError:预期维度在 [-1, 1) 范围内,但得到 1
Posted
技术标签:
【中文标题】InvalidArgumentError:预期维度在 [-1, 1) 范围内,但得到 1【英文标题】:InvalidArgumentError: Expected dimension in the range [-1, 1) but got 1 【发布时间】:2017-11-28 04:43:11 【问题描述】:我不确定这个错误是什么意思。当我尝试计算acc
时出现此错误:
acc = accuracy.eval(feed_dict = x: batch_images, y: batch_labels, keep_prob: 1.0)
我已尝试查找解决方案,但在网上找不到任何解决方案。关于导致我的错误的任何想法?
这是link to my full code。
【问题讨论】:
改用keep_prob: 0.98
。
[]
和 ()
在端点是否包含方面有所不同。因此,上面的语法表明-1
是一个有效值,但1
不是。
嗯。我们至少有一个other instance of this question,但没有答案;在我们欺骗他们之前,需要回答其中一个或另一个。
我认为错误是说变量 acc
是被评估的张量 accuracy
的维度为 1,但它应该在 [-1, 1) 范围内。有 [-1, 1) 维度是什么意思?
可能是同一个问题希望对您有所帮助enter link description here
【参考方案1】:
对于Tensorflow服务或Estimator加载的人来说,出现这个错误是因为特征字典中的值需要成批的。
data =
"signature_name": "predict",
"inputs": k:[v] for k,v in inputs.items()
【讨论】:
【参考方案2】:产生这个错误的源代码如下:
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
有效),而)
表示排除值(将1
本身放在范围之外) .
【讨论】:
那么这是否意味着acc
的维度是1,但应该在[-1, 1)范围内?尺寸在该范围内是什么意思?
@mdlee6,等于或大于-1,小于1。
是的,所以预期的尺寸应该等于或大于-1,小于1,但是acc
的尺寸却是1。尺寸相等是什么意思等于或大于 -1,小于 1?
偶然发现了这个。我是唯一一个认为必须使用-1
而不是最后一个维度的索引的人吗,如果知道的话,是非常违反直觉的吗?
是的,有人需要更新此异常消息。这很混乱。【参考方案3】:
我遇到了类似的错误,但对我来说问题是我试图在一维向量上使用 argmax。所以我的标签的形状是 (50,) 并且我在评估时试图做一个 tf.argmax(y,1) 。解决方案参考Tensorflow: I get something wrong in accuracy
【讨论】:
【参考方案4】:对于类似的代码
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));
【讨论】:
【参考方案5】:我解决了这个问题。 检查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
希望对你有所帮助
【讨论】:
这并没有给出问题的答案,任何人都无法访问您的链接。这个问题的正确答案可以在这里找到:***.com/questions/44581910/…以上是关于InvalidArgumentError:预期维度在 [-1, 1) 范围内,但得到 1的主要内容,如果未能解决你的问题,请参考以下文章
InvalidArgumentError:维度 0 的切片索引 5 超出范围。 [Op:StridedSlice] 名称:strided_slice/
InvalidArgumentError: 预期 'tf.Tensor(False, shape=(), dtype=bool)' 为真