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)