2017-02-04 1 views
6

tensorflow에서 길쌈 신경 네트워크에서 작업하고 있는데 문제가 있습니다. 문제는 tfrecords를 통해 읽은 입력 이미지가 특정 수의 나노 값을 포함한다는 것입니다. 이것의 원인은 심도가 무한한 값을 갖는 깊이 맵을 나타내며 tfrecord에서 그것을 인코딩 한 다음 그물로 먹이기 위해 디코딩하는 과정에서이 무한한 값이 나노 값이됩니다.tensorflow 텐서의 nan 값 바꾸기

내 상황에서는 원래 이미지의 무한 값을 tfrecors로 인코딩하기 전에 대체하는 것이 옵션이 아니기 때문에 이전에 수행 한 작업으로 이미지 텐서의 nan 값을 바꿀 수있는 방법이 있습니다. 그것을 그물에 먹이려고?

+0

I 시도를'input_clean tf.map_fn = (X 람다 : x == x else 0.0, input)'하지만 NaN을 제거하지 않습니다 ... 그리고 다음과 같습니다 :'cleaned = tf.map_fn (lambda x : 0.0 if math.isnan (x) else 2 * x , input)'- raise TypeError : float is required' ... –

답변

13

tf.where tf.is_nan과의 조합으로 작동한다 : (TensorFlow 0.12.1 사용)

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()) 

인쇄 :

[ 0. 1.] 
관련 문제