2017-08-25 5 views
3

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 
+0

Sind Sie sicher, dass is_nan() einen Booleschen Wert zurück? – ospahiu

+0

Es gibt einen Tensor vom Typ boolean zurück –

+0

Wie ist die Form von 'v'? ist "v" ein Skalar? – Psidom

Antwort

3

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 
0

Sie tf.is_nan in Kombination mit tf.cond nutzen könnten Werte zu ändern, wenn der tensorflow Wert NAN.

0

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.

0

Ich hoffe, das kann Ihnen helfen. math.is_nan

import math 
if math.isnan(float(v)): 
    v = 0.0