私は機械学習とテンソルフローの初心者です。テンソルフローを試みる最初のステップで、私は単純な多変量線形回帰を試みました。しかし、それは地元の最小値にとどまっているようだ。ここに私のコードです。単純な線形回帰のTensorflow
import numpy as np
import tensorflow as tf
import matplotlib.pyplot as plt
def weight_variable(shape):
initial = tf.truncated_normal(shape, stddev=1)
return tf.Variable(initial)
# dataset
xx = np.random.randint(0,1000,[1000,3])/1000.
yy = xx[:,0] * 2 + xx[:,1] * 1.4 + xx[:,2] * 3
# model
x = tf.placeholder(tf.float32, shape=[None, 3])
y_ = tf.placeholder(tf.float32, shape=[None])
W1 = weight_variable([3, 1])
y = tf.matmul(x, W1)
# training and cost function
cost_function = tf.reduce_mean(tf.square(y - y_))
train_function = tf.train.AdamOptimizer(1e-2).minimize(cost_function)
# create a session
sess = tf.Session()
# train
sess.run(tf.initialize_all_variables())
for i in range(10000):
sess.run(train_function, feed_dict={x:xx, y_:yy})
if i % 1000 == 0:
print(sess.run(cost_function, feed_dict={x:xx, y_:yy}))
出力は次のとおり
14.8449
2.20154
2.18375
2.18366
2.18366
2.18366
2.18366
2.18366
2.18366
出力値(YY)のように2.18に添加ないノイズが存在しないことを知って、かなり大きい平均二乗誤差を有する、0から6の範囲でありますデータセット。 また、学習率0.1と1e-2のGradientDescentOptimizerを試しましたが、結果はあまり改善されません。
実装に問題はありますか?
私は表示されませんerror_functionデあなたのコードに罰金が科せられます。これはcost_functionsと同じですか?学習率を下げようとしましたか? – shekkizh
申し訳ありませんが、私は 'cost_function'を意味しました。私はそれを修正した。ご意見ありがとうございます。 – Firman