I'm not sure what this error means. This error occurs when I try to calculate acc
:
acc = accuracy.eval(feed_dict = {x: batch_images, y: batch_labels, keep_prob: 1.0})
I've tried looking up solutions, but I couldn't find any online. Any ideas on what's causing my error?
Here's a link to my full code.
I had a similar error but the problem for me was that I was trying to use argmax on a 1 dimensional vector. So the shape of my label was (50,) and I was trying to do a tf.argmax(y,1) on that when evaluating. The solution reference is Tensorflow: I get something wrong in accuracy
The source code generating this error reads as follows:
OP_REQUIRES(context, axis >= 0 && axis < input_dims,
errors::InvalidArgument("Expected dimension in the range [",
-input_dims, ", ", input_dims,
"), but got ", dim));
Note that axis
is required to be less than input_dims
, not less-than-or-equal.
This conforms with the syntax [-1,1)
in the message: [
indicates an inclusive value (such that -1
is valid), whereas )
indicates an exclusive value (putting 1
itself outside the range).
For code like
tf.equal(tf.argmax(y, 1), tf.argmax(labels, 1))
which is often used when calculating accuracy, you can change to
tf.equal(tf.argmax(y, -1), tf.argmax(labels, -1))
according to the source code:
// 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));
I solved this problem.
Check the expression of 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
Hope to be helpful