2017-06-26 37 views
0

tensor成爲張量,其中len(tensor.get_shape()) == 2。 如何做np.nansum(tensor, axis=1)?從documentation,nansum「返回給定座標軸上數組元素的總和,不將數字(NaNs)視爲零」。Tensorflow:求和軸1中的二維張量的非NaN?

我可以看到如何使用要做到這一點:

tf.reduce_sum(tf.where(tf.is_nan(tensor), tf.zeros_like(tensor), tensor), axis=1) 

但這似乎過於複雜。有更好的方法嗎?

+1

這似乎是一個很好的方法給我(即我不認爲有一個融合的內核進行此操作)。 –

+0

如果你把這個作爲答案,我會接受它,我們可以停止顯示這個問題給其他用戶:) – rhaps0dy

+0

你可能是正確的,這是一個罕見的邊緣的情況下,和'tf.where'大概介紹了可以忽略不計放緩。我不知道我爲什麼在意,我沒有衡量。 – rhaps0dy

回答

0

沒有更好的方法。只需使用問題中包含的代碼即可。

事實上,你可以使用任何tf.wheretensor取代的NaN:

tf.where(tf.is_nan(tensor), replacement_tensor, tensor) 

,當然還有,設置replacement_tensor = tf.zeros_like(tensor)替換NaN的零。