2016-02-24 7 views
10

Próbowałem:Jak przekonwertować tf.int64 na tf.float32?

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

Następnie pojawia się następujący błąd:

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

Odpowiedz

8

Ups, znajdę funkcję w API ...

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

można rzucić na ogół przy użyciu:

tf.cast(my_tensor, tf.float32) 

Wymień tf.float32 na żądany typ.


Edit: Wydaje się w tej chwili przynajmniej, że tf.cast nie będzie oddanych do unsigned dtype (np tf.uint8). Aby obejść ten problem, można przesłać do podpisanego odpowiednika i użyć go do uzyskania pełnej wersji. na przykład

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

Należy zauważyć, że nie może obliczyć TF gradienty tych operacji, tak, że nie mogą być stosowane do symulacji skwantowane wag. – oarfish

0

Można użyć tf.cast(x, tf.float32) lub tf.to_float(x), z których oba oddane do float32.

przykład:

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) 
+0

, kiedy rzuciłem maga z typem 'tf.uint8' na' tf.float32', i użyłem 'matplotlib' aby je pokazać,' tf.float32' zmień. Jak wyświetlić główny obraz? – Tavakoli