Ich möchte eine Tensorflow-Variable überprüfen und auf Null setzen, wenn es NaN ist.Prüfen, ob NaN in Tensorflow
Wie kann ich das tun? Der folgende Trick scheint nicht zu funktionieren:
if tf.is_nan(v) is True:
v = 0.0
Ich möchte eine Tensorflow-Variable überprüfen und auf Null setzen, wenn es NaN ist.Prüfen, ob NaN in Tensorflow
Wie kann ich das tun? Der folgende Trick scheint nicht zu funktionieren:
if tf.is_nan(v) is True:
v = 0.0
Wenn v
ein 0T Tensor ist, könnten Sie tf.where
verwenden, um den Wert zu testen und zu aktualisieren:
import numpy as np
v = tf.constant(np.nan) # initialize a variable as nan
v = tf.where(tf.is_nan(v), 0., v)
with tf.Session() as sess:
print(sess.run(v))
# 0.0
Sie tf.is_nan in Kombination mit tf.cond nutzen könnten Werte zu ändern, wenn der tensorflow Wert NAN.
Bibliotheken wie numpy (in diesem Fall tensorflow) haben oft ihre eigenen boolean-Implementierungen, die Speicheradressen eines benutzerdefinierten Typ boolean zu vergleichen und CPython gebaut ist is
in Verwendung wird in erratischen Verhalten führen.
Entweder nur die implizite Boolesche Nichtigkeit prüfen ->if tf.is_nan(v)
oder einen Gleichheitsvergleich durchführen if tf.is_nan(v) == True
.
Ich hoffe, das kann Ihnen helfen. math.is_nan
import math
if math.isnan(float(v)):
v = 0.0
Sind Sie sicher, dass is_nan() einen Booleschen Wert zurück? – ospahiu
Es gibt einen Tensor vom Typ boolean zurück –
Wie ist die Form von 'v'? ist "v" ein Skalar? – Psidom