简体   繁体   中英

Tensorflow - casting from int to float strange behavior

I am working on tensorflow 0.12 and am having problem with casting. The following snippet of code does a strange thing:

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

I get a value: 6.86574233e-36

I also tried using tf.to_float() and tf.saturate_cast . Both gave the same result.

Please help.

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

You need to declare the dtype for your tf.constant : https://www.tensorflow.org/api_docs/python/tf/constant

I checked the code in python3 and python2 for the same tensorflow version as well the code seems to be working correctly as in both the cases I got the following output for python2

print b.eval()
1.0

I would suggest checking the tensorflow installation or the virtualenv.

No error in your program.

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

This is an online environment for TF https://codeenv.com/env/run/gXGpnR/
Test your code there to run, use

  • click on test_tf.py
  • add your code
  • in left side CLI, type ipython test_tf.py

由于我发现这仍然受到一些关注,我应该提到较新版本的tensorflow没有显示这种行为,我建议使用tensorflow版本1.13或更高版本

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM