-1
整流線性單位應該執行以下功能:Tensorflow RELU歸在我看來奇怪
relu(x) = max(x, 0)
然而,這似乎不符合tf.nn.relu
情況:
import tensorflow as tf
import numpy as np
rand_large = np.random.randn(10, 3)*100
X = tf.placeholder(tf.float32, [10, 3])
sess = tf.Session()
sess.run(tf.nn.relu(X), feed_dict={X:rand_large})
隨機矩陣看起來像這樣:
>>> rand_large
array([[ 21.94064161, -82.16632876, 16.25152777],
[ 55.54897693, -93.15235155, 118.99166126],
[ -13.36452239, 39.36508285, 65.42844521],
[-193.34041145, -97.08632376, 99.22162259],
[ 87.02924619, 2.04134891, -27.29975745],
[-181.11406687, 43.55952393, 42.29312993],
[ -29.81242188, 93.5764354 , -165.62711447],
[ 17.78380711, -171.30536766, -197.20709038],
[ 105.94903623, 34.07995616, -7.27568839],
[-100.59533697, -189.88957685, -7.52421816]])
而且relu函數的輸出如t他:
>>> sess.run(tf.nn.relu(X), feed_dict={X:rand_large})array([[ 1. , 0.5, 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.5, 0.5],
[ 0.5, 0.5, 0.5]], dtype=float32)
所以,如果我正確地看到它,tf.nn.relu
做某種標準化的,對不對?如果是,爲什麼不在docs中提及?
好的,我發現整個問題都與我的tensorflow installtion有關,這似乎是腐敗的。在另一臺機器上,我確實得到了預期的結果。 感謝您的幫助和有益的意見。
你提到的輸出是錯誤的,你應該得到和負值爲零保持正值。 –
當我運行你的代碼時,我沒有得到你提到的輸出。 –
真的很奇怪......也許這是我安裝的TF? – romeasy