2017-02-21 23 views
13

Я работаю над tensorflow 0.12, и у меня проблема с литьем. Следующий фрагмент кода делает странную вещь:Tensorflow - литье из int, чтобы плавать странное поведение

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

я получаю значение: 6.86574233e-36

Я также попытался с помощью tf.to_float() и tf.saturate_cast. Оба дали тот же результат.

Пожалуйста, помогите.

+0

Я не могу воспроизвести вашу проблему в TF 1.0. – MikiBear

+0

Вы запускаете Tensorflow на gpu, и если да, то какую карту gpu вы используете? С какой версией cuda был составлен Tensorflow? Иногда при использовании gpu, который не поддерживается версией cuda, странные вещи происходят без сообщений об ошибках. – BlueSun

+0

Привет, я работаю на процессоре: Intel Xeon E5-2680 – aarbelle

ответ

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

Вы должны объявить dtype для tf.constant: https://www.tensorflow.org/api_docs/python/tf/constant

+0

Это не решит проблему. Когда я делаю это, я ставлю b = 0, кажется, что независимо от типа, который я использую uint8, uint16, int 32, int64 все дают разные результаты после отливки – aarbelle

+0

мой код дает вам '0' для' b.eval() '? – wong2

+0

Да, но проблема глубже. Реальная проблема заключается в чтении png-изображений, которые сохраняются как uint8. после tf.image.decode_png (путь, dtype = tf.uint8) Я получаю хорошие значения. но тогда, когда я пытаюсь бросить плавать, я получаю мусор – aarbelle

0

Я проверил код в Python3 и python2 для одной и той же версии tensorflow, а код, кажется, работает правильно, так как в обоих случаях я получил следующий выход для python2

print b.eval() 
1.0 

Я бы предложил проверить установку tensorflow или virtualenv.

0

Ошибка в вашей программе.

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

Это онлайн-среда для TF https://codeenv.com/env/run/gXGpnR/
Проверьте свой код там работать, используйте

  • нажмите на test_tf.py
  • добавить код
  • в CLI с левой стороны, type ipython test_tf.py