Python TensorFlow:将float64张量强制转换为float32

Python TensorFlow:将float64张量强制转换为float32,python,machine-learning,tensorflow,Python,Machine Learning,Tensorflow,我试图使用:train=optimizer.minimize(loss)但标准优化器不能与tf.float64一起工作。因此,我想将我的损失从tf.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-packag

我试图使用:
train=optimizer.minimize(loss)
但标准优化器不能与
tf.float64
一起工作。因此,我想将我的
损失
tf.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].
回溯(最近一次呼叫最后一次):
文件“q4.py”,第85行,在
列车=优化器。最小化(损失)
文件“/Library/Python/2.7/site-packages/tensorflow/Python/training/optimizer.py”,第190行,第5行
colocate_gradients_with_ops=colocate_gradients_with_ops)
文件“/Library/Python/2.7/site packages/tensorflow/Python/training/optimizer.py”,第229行,在计算梯度中
self.\u断言\u有效\u数据类型([丢失])
文件“/Library/Python/2.7/site packages/tensorflow/Python/training/optimizer.py”,第354行,在有效的数据类型中
数据类型,t.name,[v代表有效的\u数据类型中的v]))
ValueError:Add_1:0的tf.float64类型无效,应为:[tf.float32]。

简短的回答是,您可以使用op将张量从
tf.float64
转换为
tf.float32


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

,因此您希望将其从float64转换为float32?是的。作为临时修复,我将numpy数组从float64转换为float32,这是我的float64张量首先出现的位置,解决了我的问题,但必须有一种在tf中转换的方法
loss = tf.cast(loss, tf.float32)