2017-01-27 2 views
2

Я получаю это исключение при выполнении прогноза с использованием нейронной сети deconv. Ранг и форма кажутся одинаковыми, поэтому я не уверен, в чем проблема.TensorFlow: значение формы ошибки и ранг не совпадают: ValueError: Shape (?, 128, 128, 2) должен иметь ранг 2

File "/home/Workspace/image-recognition/app/model/per_pixel_deconv.py", line 141, in Model 
    softmax = tf.nn.softmax(output, name=None) 

File "/home/anaconda2/envs/image-recognition/lib/python2.7/site-packages/tensorflow/python/ops/gen_nn_ops.py", line 1396, in softmax 
    result = _op_def_lib.apply_op("Softmax", logits=logits, name=name) 

File "/home/anaconda2/envs/image-recognition/lib/python2.7/site-packages/tensorflow/python/framework/op_def_library.py", line 703, in apply_op 
    op_def=op_def) 

File "/home/anaconda2/envs/image-recognition/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 2319, in create_op 
    set_shapes_for_outputs(ret) 

File "/home/anaconda2/envs/image-recognition/lib/python2.7/site-packages/tensorflow/python/framework/ops.py", line 1711, in set_shapes_for_outputs 
    shapes = shape_func(op) 

File "/home/anaconda2/envs/image-recognition/lib/python2.7/site-packages/tensorflow/python/framework/common_shapes.py", line 45, in _ShapeFunction 
    return [op.inputs[0].get_shape().with_rank(rank)] 

File "/home/anaconda2/envs/image-recognition/lib/python2.7/site-packages/tensorflow/python/framework/tensor_shape.py", line 641, in with_rank 
    raise ValueError("Shape %s must have rank %d" % (self, rank)) 
ValueError: Shape (?, 128, 128, 2) must have rank 2 
+0

что '(?, 128, 128, 2)' выглядит как массив/кортеж ранга/размерности 1, не должен выглядеть примерно так -> '((?, 128), (128, 2)) 'для ранга 2? и "?" в первой записи в Shape выглядит неуместно. – Alex

ответ

1

Форма (?, 128, 128, 2) является тензором ранга 4, но SoftMax оператор, очевидно, ожидал ранг 2 тензора.

Похоже, вы используете старую версию Tensorflow. В версии 0.10, tf.nn.softmax требуется, чтобы его вход будет ранг 2: https://www.tensorflow.org/versions/r0.10/api_docs/python/nn/classification#softmax

В текущих версиях Tensorflow, tf.nn.softmax принимает входные сигналы любого ранга: https://www.tensorflow.org/api_docs/python/nn/classification#softmax

Попробуйте использовать более новую версию Tensorflow.

Надеюсь, что это поможет!

+0

Спасибо, это действительно началось, когда я вернулся к v 0.10. К сожалению, у меня есть код, который испытывает трудности между версиями 10, 11 и 12. –

Смежные вопросы