【问题标题】:Tensorflow - casting from int to float strange behaviorTensorflow - 从 int 转换为 float 奇怪的行为
【发布时间】:2017-07-10 22:00:16
【问题描述】:

我正在使用 tensorflow 0.12 并且在转换时遇到问题。 下面的 sn-p 代码做了一件奇怪的事情:

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。两者都给出了相同的结果。

请帮忙。

【问题讨论】:

  • 我无法在 TF 1.0 中重现您的问题。
  • 您是否在 GPU 上运行 Tensorflow,如果是,您使用什么 GPU 卡? Tensorflow 是用哪个 cuda 版本编译的?有时,当使用 cuda 版本不支持的 gpu 时,会发生奇怪的事情而没有任何错误消息。
  • 嗨,我在 CPU 上运行:Intel Xeon E5-2680
  • 我面临同样的问题。在其他机器上运行良好的代码在我的机器上会出现这种奇怪的行为。你解决了吗?如何?谢谢!
  • @ana 不,还没有解决。我发现虽然使用 tf.saturate_cast 不会导致问题

标签: python python-2.7 tensorflow


【解决方案1】:
sess = tf.InteractiveSession()
a = tf.constant(1, tf.int64)  <--------
b = tf.cast(a, tf.float32)
print b.eval()  # 1.0

您需要为您的tf.constant 声明dtypehttps://www.tensorflow.org/api_docs/python/tf/constant

【讨论】:

  • 这并不能解决问题。当我这样做时,我打赌 b=0 似乎我使用的任何类型 uint8、uint16、int 32、int64 在转换后都会给出不同的结果
  • 是的,但问题远不止于此。真正的问题是读取保存为 uint8 的 png 图像。在 tf.image.decode_png(path, dtype=tf.uint8) 我得到了很好的价值。但是当我尝试投射到浮动时,我得到了垃圾
  • @aarbelle 你应该在问题中写下你真正的问题。我想我解决了你的问题。
  • 感谢您的时间和精力,但是您的建议没有奏效,所以不,您没有解决我的问题中的问题,如果它奏效了,我可能会继续解决更复杂的问题,但即使是这个简单的任务似乎也失败了。
  • @aarbelle 你能试试 tensorflow 1.0 吗?它对我有用。
【解决方案2】:

由于我看到这仍然引起了一些关注,我应该提一下,较新版本的 tensorflow 不会显示此行为,我建议使用 tensorflow 1.13 或更高版本

【讨论】:

    【解决方案3】:

    我在 python3 和 python2 中检查了相同 tensorflow 版本的代码,并且代码似乎工作正常,因为在这两种情况下我都得到了 python2 的以下输出

    print b.eval()
    1.0
    

    我建议检查 tensorflow 安装或 virtualenv。

    【讨论】:

      【解决方案4】:

      你的程序没有错误。

      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 中,键入 ipython test_tf.py

      【讨论】:

        猜你喜欢
        • 2021-04-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多