2017-02-21 17 views
13

Pracuję nad tensorflow 0.12 i mam problem z castowaniem. Poniższy fragment kodu robi dziwną rzecz:Tensorflow - casting od int do float dziwne zachowanie

sess = tf.InteractiveSession() 
a = tf.constant(1) 
b = tf.cast(a, tf.float32) 
print b.eval() 

dostaję wartość: 6.86574233e-36

Próbowałem też za pomocą tf.to_float() i tf.saturate_cast. Obie dały taki sam wynik.

Proszę o pomoc.

+0

Nie mogę odtworzyć twojego problemu w TF 1.0. – MikiBear

+0

Czy uruchamiasz Tensorflow na GPU, a jeśli tak, to jakiej karty Gpu używasz? Z jaką wersją cuda został skompilowany Tensorflow? Czasami, gdy używasz gpu, który nie jest obsługiwany przez wersję Cudy, dziwne rzeczy dzieją się bez żadnych komunikatów o błędach. – BlueSun

+0

Witam, używam procesora: Intel Xeon E5-2680 – aarbelle

Odpowiedz

1
sess = tf.InteractiveSession() 
a = tf.constant(1, tf.int64) <-------- 
b = tf.cast(a, tf.float32) 
print b.eval() # 1.0 

Musisz zadeklarować dtype dla tf.constant: https://www.tensorflow.org/api_docs/python/tf/constant

+0

To nie rozwiązuje problemu. Kiedy to robię, zakładam b = 0 wydaje się, że niezależnie od tego, jakiego typu używam uint8, uint16, int 32, int64 wszystkie dają różne wyniki po odlaniu – aarbelle

+0

mój kod daje ci '0' dla' b.eval() '? – wong2

+0

tak, ale problem jest głębszy. Prawdziwym problemem jest czytanie obrazów PNG zapisanych jako uint8. after tf.image.decode_png (path, dtype = tf.uint8) Otrzymuję dobre wartości. ale kiedy próbuję rzucać, aby unosić się i wyrzucać śmieci – aarbelle

0

Sprawdziłem kod w python3 i python2 dla tej samej wersji tensorflow także kod wydaje się działać poprawnie jak w obu przypadkach ja dostałem następujące wyjście dla python2

print b.eval() 
1.0 

Sugerowałbym sprawdzenie instalacji tensorflow lub virtualenv.

0

Brak błędów w programie.

import tensorflow as tf 
sess = tf.InteractiveSession() 
a = tf.constant(1) 
b = tf.cast(a, tf.float32) 
print b.eval() 

Jest to środowisko online dla TF https://codeenv.com/env/run/gXGpnR/
Przetestuj swój kod tam uruchomić, należy

  • kliknij na test_tf.py
  • dodać swój kod
  • w lewej bocznej CLI type ipython test_tf.py