我尝试使用:train = optimizer.minimize(loss)
,但标准优化器不支持tf.float64
。因此我想将我的loss
从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].
回答:
简短的回答是,您可以使用tf.cast()
操作将张量从tf.float64
转换为tf.float32
:
loss = tf.cast(loss, tf.float32)
更详细的回答是,这并不能解决您在使用优化器时遇到的问题。(对tf.float64
的支持不足是一个已知问题。)优化器要求您尝试优化的所有tf.Variable
对象也必须是tf.float32
类型。