J'essaie d'utiliser: train = optimizer.minimize(loss)
mais les optimiseurs standard ne fonctionnent pas avec tf.float64
. Par conséquent, je veux tronquer mon loss
de tf.float64
à seulement 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].
La réponse courte est que vous pouvez convertir un tenseur de tf.float64
En tf.float32
En utilisant l'opération tf.cast()
:
loss = tf.cast(loss, tf.float32)
La réponse la plus longue est que cela ne résoudra pas tous vos problèmes avec les optimiseurs. (Le manque de prise en charge de tf.float64
Est un problème conn .) Les optimiseurs nécessitent que tous les tf.Variable
les objets que vous essayez d'optimiser doivent également avoir le type tf.float32
.