2017-02-04 30 views
6

में नैन मानों को बदलें, मैं tensorflow में एक संक्रामक तंत्रिका नेटवर्क पर काम कर रहा हूं और मुझे कोई समस्या है। समस्या यह है कि मैंने tfrecords के माध्यम से पढ़ी गई इनपुट छवि में नैन मानों की एक निश्चित संख्या शामिल है। इसका कारण यह है कि छवि एक गहराई का प्रतिनिधित्व करती है जिसमें इसमें कुछ अनंत मान हैं, और इसे tfrecord में एन्कोडिंग की प्रक्रिया में और फिर इसे नेट पर फ़ीड करने के लिए डीकोडिंग इन अनंत मान नन मान बन जाते हैं।tensorflow tensor

अब, क्योंकि मेरी स्थिति में मूल छवि में अनंत मूल्यों को प्रतिस्थापित करने से पहले टीफ्रेकर्स में एन्कोडिंग करने से पहले विकल्प नहीं है, इसलिए मैं अपने छवि टेंसर में नैन मानों को प्रतिस्थापित करने के लिए किसी भी तरह से ऑपरेशन के रूप में बदल सकता हूं। इसे नेट पर खिलाओ?

+0

मैंने कोशिश की 'input_clean = tf.map_fn (लैम्ब्डा एक्स : एक्स अगर x == x अन्य 0.0, इनपुट) ', लेकिन यह NaNs को नहीं हटाता है ... और यह:' cleaned = tf.map_fn (lambda x: 0.0 अगर math.isnan (x) else 2 * x , इनपुट) '- उठाता है 'टाइपरर: एक फ्लोट की आवश्यकता है' ... –

उत्तर

13

tf.where और tf.is_nan का एक संयोजन से काम करना चाहिए:

import tensorflow as tf 
with tf.Session(): 
    has_nans = tf.constant([float('NaN'), 1.]) 
    print(tf.where(tf.is_nan(has_nans), tf.zeros_like(has_nans), has_nans).eval()) 

प्रिंटों (TensorFlow 0.12.1 का उपयोग कर):

[ 0. 1.]