私はちょうどテンソルフローを学習し始め、線形回帰のためのニューラルネットワークを実装していました。私は利用可能なオンラインチュートリアルのいくつかに従っていたが、コードを書くことができた。私はアクティベーション機能を使用しておらず、MSE(tf.reduce_sum(tf.square(output_layer - y))
)を使用しています。コードを実行すると予測精度がNan
になります。私は使用されるコードは、サンプル出力は、すべてのヘルプが理解されるテンソルを使用した線形回帰のためのニューラルネットワーク
Epoch = 1, train accuracy = -2643642714558682640372224491520000.000000%, test accuracy = -2683751730046365038353121175142400.000000%
Epoch = 1, train accuracy = 161895895004931631079134808611225600.000000%, test accuracy = 165095877160981392686228427295948800.000000%
Epoch = 1, train accuracy = -18669546053716288450687958380235980800.000000%, test accuracy = -19281734142647757560839513130087219200.000000%
Epoch = 1, train accuracy = inf%, test accuracy = inf%
Epoch = 1, train accuracy = nan%, test accuracy = nan%
下に与えられる
# Placeholders
X = tf.placeholder("float", shape=[None, x_size])
y = tf.placeholder("float")
w_1 = tf.Variable(tf.random_normal([x_size, 1], seed=seed))
output_layer = tf.matmul(X, w_1)
predict = output_layer
cost = tf.reduce_sum(tf.square(output_layer - y))
optimizer = tf.train.GradientDescentOptimizer(0.0001).minimize(cost)
sess = tf.Session()
init = tf.global_variables_initializer()
sess.run(init)
for epoch in range(100):
# Train with each example
for i in range(len(train_X)):
sess.run(optimizer, feed_dict={X: train_X[i: i + 1], y: train_y[i: i + 1]})
train_accuracy = np.mean(sess.run(predict, feed_dict={X: train_X, y: train_y}))
test_accuracy = np.mean(sess.run(predict, feed_dict={X: test_X, y: test_y}))
print("Epoch = %d, train accuracy = %.2f%%, test accuracy = %.2f%%"
% (epoch + 1, 100. * train_accuracy, 100. * test_accuracy))
# In[121]:
sess.close()
以下に示します。また、本当に素晴らしいデバッグのヒントを提供できる場合は、
ありがとうございました。
注: 私はsamllの値にlearing_rateを減らす(1E:私は単一のバッチのために実行すると は、予測値が大きすぎる
sess.run(optimizer, feed_dict={X: train_X[0:1], y: train_y[0:1]})
sess.run(optimizer, feed_dict={X: train_X[1:2], y: train_y[1:2]})
sess.run(optimizer, feed_dict={X: train_X[2:3], y: train_y[2:3]})
print(sess.run(predict, feed_dict={X: train_X[3:4], y: train_y[3:4]}))
出力
[[ 1.64660544e+08]]
NOTEになってきています-8)、それはちょっとした仕事です。それでも、同じデータセットで回帰を実行していたときに、より高いlearing_rateがうまく動作しました。 このように高い評価率が問題でしたか?この行で
私は1つのバッチサイズで実行しています。とにかく、あなたが提案した変更を加えようとしましたが、それでも予測値が大きくなりすぎています。私が書いたコードに間違いはありますか? – Faust