【问题标题】:TensorFlow: cast a float64 tensor to float32TensorFlow:将 float64 张量转换为 float32
【发布时间】:2016-06-14 00:35:24
【问题描述】:

我正在尝试使用:train = optimizer.minimize(loss),但标准优化器不适用于 tf.float64。因此,我想将我的losstf.float64 截断为仅tf.float32

Traceback (most recent call last):
  File "q4.py", line 85, in <module>
    train = optimizer.minimize(loss)
  File "/Library/Python/2.7/site-packages/tensorflow/python/training/optimizer.py", line 190, in minimize
    colocate_gradients_with_ops=colocate_gradients_with_ops)
  File "/Library/Python/2.7/site-packages/tensorflow/python/training/optimizer.py", line 229, in compute_gradients
    self._assert_valid_dtypes([loss])
  File "/Library/Python/2.7/site-packages/tensorflow/python/training/optimizer.py", line 354, in _assert_valid_dtypes
    dtype, t.name, [v for v in valid_dtypes]))
ValueError: Invalid type tf.float64 for Add_1:0, expected: [tf.float32].

【问题讨论】:

  • 所以要从float64转成float32?
  • 是的。作为临时修复,我将 numpy 数组从 float64 转换为 float32,这是我的 float64 张量首先出现的地方,这解决了我的问题,但必须有一种方法可以在 tf 本身中进行转换

标签: python machine-learning tensorflow


【解决方案1】:

简短的回答是,您可以使用 tf.cast() 操作将张量从 tf.float64 转换为 tf.float32

loss = tf.cast(loss, tf.float32)

更长的答案是,这不会解决您使用优化器的所有问题。 (缺少对tf.float64 的支持是known issue。)优化器要求您尝试优化的所有tf.Variable 对象也必须具有tf.float32 类型。 p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-21
    • 1970-01-01
    • 2018-01-30
    • 2021-07-09
    • 1970-01-01
    相关资源
    最近更新 更多