tensorflow int64

tensorflow - ¿Cómo convertir tf.int64 a tf.float32?



(4)

Lo intenté:

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

Luego aparece el siguiente error:

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


Puede usar tf.cast(x, tf.float32) o tf.to_float(x) , ambos de los cuales se convierten a float32.

Ejemplo:

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)


Puedes lanzar generalmente usando:

tf.cast(my_tensor, tf.float32)

Reemplace tf.float32 con su tipo deseado.

Edición : Parece que al menos por el momento, tf.cast no se convertirá en un dtype sin firma (por ejemplo, tf.uint8 ). Para tf.bitcast esto, puede convertir al equivalente firmado y usar tf.bitcast para obtener todo el camino. p.ej

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


Vaya, encuentro la función en la API ...

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


tipo de image emitida puede usar tf.image.convert_image_dtype() que convierte el rango de imagen [0 255] a [0 1] :

img_uint8 = tf.constant([1,2,3], dtype=tf.uint8) img_float = tf.image.convert_image_dtype(img_uint8, dtype=tf.float32) with tf.Session() as sess: _img= sess.run([img_float]) print(_img, _img.dtype)

salida:

[0.00392157 0.00784314 0.01176471] float32

si solo desea emitir tipo y mantener el rango de valores, utilice tf.cast o tf.to_float como tf.to_float @ user2010 y @Mark McDonald