2017-01-18 3 views
0

У меня есть условие:написания, если заявление в tensorflow и сравнение значений двух тензоров

if tf.shape(n_spec)[0] < tf.shape(s_spec)[0]: 
    n_spec = tf.concat(0, [tf.zeros([empty_cols, n_spec.get_shape()[1]], tf.int32), n_spec]) 

где n_spec и s_spec являются два тензорами (2d массивами), и я хочу, чтобы выполнить эту конкатенации, если один меньше чем другой в измерении 0. Когда я пытаюсь это сделать, тензорный поток выдает ошибку:

TypeError: Using a `tf.Tensor` as a Python `bool` is not allowed. Use `if t is not None:` instead of `if t:` to test if a tensor is defined, and use TensorFlow ops such as tf.cond to execute subgraphs conditioned on the value of a tensor. 

Как я могу переформулировать вышеизложенное?

ответ

0

С вашего кода, похоже, что форма n_spec известна как статическая (так как вы используете n_spec.get_shape()). В этом случае вы можете просто сделать следующее:

if n_spec.get_shape()[0] < s_spec.get_shape()[0]: 
    n_spec = tf.concat(0, [tf.zeros([empty_cols, n_spec.get_shape()[1]], tf.int32), n_spec]) 
Смежные вопросы