Tensorflow: как преобразовать скалярный тензор в скалярную переменную в python?

в Tensorflow я хотел бы преобразовать скалярный тензор в целое число. Можно ли это сделать?

Мне нужно создать цикл, а индекс цикла-скалярный Тензор, и внутри тела цикла я хочу использовать индекс для доступа к записи в тензорном массиве.

например:

idx = tf.constant(0)
c = lambda i : tf.less(i, 10)
def body(idx) :
  i = # convert idx to int 
  b = weights[i]  # access an entry in a tensor array, tensor cannot be used directly
  ....
  return idx+1
tf.while_loop(c, body, [idx])

3 ответов


вам нужно оценить тензор, чтобы получить значение.

Если вы хотите сделать это:

i = # convert idx to int

вы можете сделать sess.run () или idx.eval ():

i = sess.run(idx)

вам нужно создать tf.Session () для приведения тензора к скалярному

with tf.Session() as sess:
    scalar = tensor_scalar.eval()

Если вы используете ноутбуки IPython, вы можете использовать Interactive Session:

sess = tf.InteractiveSession()
scalar = tensor_scalar.eval()
# Other ops
sess.close()

попробуйте использовать tf.reshape ()

# tensor 't' is [7]
# shape `[]` reshapes to a scalar
reshape(t, []) ==> 7

Это https://www.tensorflow.org/api_docs/python/tf/reshape