私は単純な線形回帰を実装することで初めてテンソルを試しています。収束する代わりに、私の重みは数回の反復で無限に広がります。Tensorflow Weights Divergeまたは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