2017-02-04 36 views
6

Tôi đang làm việc trên một mạng nơ-ron xoắn ốc trong dòng chảy tensor và tôi gặp vấn đề. Vấn đề là hình ảnh đầu vào tôi đọc qua tfrecords chứa một số lượng nhất định của các giá trị nan. Nguyên nhân của điều này là hình ảnh đại diện cho một bản đồ độ sâu có một số giá trị vô hạn trong nó, và trong quá trình mã hóa nó trong tfrecord và sau đó giải mã để đưa nó vào mạng các giá trị vô hạn này trở thành giá trị nan.Thay thế các giá trị nan trong tensor tensorflow

Bây giờ, vì trong trường hợp của tôi thay thế các giá trị vô hạn trong hình ảnh gốc trước khi mã hóa nó trong tfrecors không phải là một lựa chọn, có bất kỳ cách nào tôi có thể thay thế các giá trị nan trong tensor hình ảnh của tôi như là một hoạt động để làm trước khi tôi đưa nó vào mạng?

+0

tôi đã cố gắng 'input_clean = tf.map_fn (lambda x : x nếu x == x khác 0.0, đầu vào) ', nhưng nó không loại bỏ các NaN ... Và điều này:' clean = tf.map_fn (lambda x: 0.0 nếu math.isnan (x) else 2 * x , input) '- tăng' TypeError: float là bắt buộc' ... –

Trả lời

13

Một sự kết hợp của tf.where và tf.is_nan nên làm việc:

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

Prints (sử dụng TensorFlow 0.12.1):

[ 0. 1.] 
Các vấn đề liên quan