Подтвердить что ты не робот

Как преобразовать tf.int64 в tf.float32?

Я пробовал:

test_image = tf.convert_to_tensor(img, dtype=tf.float32)

Затем появляется следующая ошибка:

ValueError: Tensor conversion requested dtype float32 for Tensor with dtype int64: 'Tensor("test/ArgMax:0", shape=TensorShape([Dimension(None)]), dtype=int64)'
4b9b3361

Ответ 1

К сожалению, я нашел функцию в API...

 tf.to_float(x, name='ToFloat')

Ответ 2

Вы можете использовать в целом, используя:

tf.cast(my_tensor, tf.float32)

Замените tf.float32 на нужный вам тип.


Изменить. Похоже, что в данный момент tf.cast не будет передаваться в unsigned dtype (например, tf.uint8). Чтобы обойти это, вы можете применить к подписанному эквиваленту и использовать tf.bitcast, чтобы получить весь путь. например.

tf.bitcast(tf.cast(my_tensor, tf.int8), tf.uint8)

Ответ 3

Вы можете использовать tf.cast(x, tf.float32) или tf.to_float(x), оба из которых применяются для float32.

Пример:

sess = tf.Session()

# Create an integer tensor.
tensor = tf.convert_to_tensor(np.array([0, 1, 2, 3, 4]), dtype=tf.int64)
sess.run(tensor)
# array([0, 1, 2, 3, 4])

# Use tf.cast()
tensor_float = tf.cast(tensor, tf.float32)
sess.run(tensor_float)
# array([ 0.,  1.,  2.,  3.,  4.], dtype=float32)

# Use tf.to_float() to cast to float32
tensor_float = tf.to_float(tensor)
sess.run(tensor_float)
# array([ 0.,  1.,  2.,  3.,  4.], dtype=float32)