TensorFlow:将float64张量转换为float32

2024-04-30 02:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用: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].

Tags: inpypackagestftensorflowlinetraininglibrary
1条回答
网友
1楼 · 发布于 2024-04-30 02:19:56

简而言之,您可以使用^{}操作将张量从tf.float64转换为tf.float32

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

更长的答案是,这并不能解决优化器的所有问题。(缺少对tf.float64的支持是一个known issue)优化器要求您试图优化的所有对象也必须具有类型tf.float32

相关问题 更多 >