我試圖通過實施一個簡單的線性迴歸第一次tensorflow。而不是收斂,我的權重在幾次迭代中偏離到無窮大。Tensorflow權重分歧或NaN
首先我初始化我的數據
import tensorflow as tf
import numpy as np
T = 100
noise = 10*np.random.random(size=T).astype(np.float32)
x = np.array([np.arange(T), np.ones(T)]).astype(np.float32)
w = np.array([[2,4]]).astype(np.float32)
y = w.dot(x) + noise
w.dot(x)
然後創建我tensorflow變量:
X = tf.placeholder(tf.float32, [2, T], name="X")
W = tf.Variable(tf.ones([1,2]), name="W")
Yhat = tf.matmul(W,X)
Y = tf.placeholder(tf.float32, [1,T], name="Y")
MSE = (1./(2*T))*tf.reduce_sum(tf.pow(Y-Yhat, 2))
然後我訓練模型
sess = tf.InteractiveSession()
tf.global_variables_initializer().run()
trainer = tf.train.GradientDescentOptimizer(0.5).minimize(MSE)
for _ in range(100):
sess.run(trainer, feed_dict={X: x, Y: y})
print sess.run(MSE,feed_dict={X: x, Y: y})
而我得到的輸出
5.55387e+09
1.49582e+16
4.02866e+22
1.08503e+29
2.9223e+35
inf
inf
inf
inf
inf
inf
nan
nan
我在這裏做錯了什麼?
您的學習速度可能太高,以至於優化器不能下降到最小值,而是跳到參數空間中。嘗試一下學習速度,例如'1e-3'。 –
我還在使用NaNs – theideasmith
和'1e-5'? :-) – user1735003