機械学習とTensorflowを初めて使用しています。現在私は、y = a * xという形式の単純な線形回帰モデルを作成するためのチュートリアルのロジックに従っています(バイアス項はありません)。しかし、何らかの理由でモデルが正しい値 "a"に収束しない。データセットは私がExcelで作成したものです。以下に示すよう:単純な線形回帰がテンソルフローに収束しない
ここで私は、生成、このダミーデータセットにtensorflow実行しようとする私のコードです。以下
import tensorflow as tf
import pandas as pd
w = tf.Variable([[5]],dtype=tf.float32)
b = tf.Variable([-5],dtype=tf.float32)
x = tf.placeholder(shape=(None,1),dtype=tf.float32)
y = tf.add(tf.matmul(x,w),b)
label = tf.placeholder(dtype=tf.float32)
loss = tf.reduce_mean(tf.squared_difference(y,label))
data = pd.read_csv("D:\\dat2.csv")
xs = data.iloc[:,:1].as_matrix()
ys = data.iloc[:,1].as_matrix()
optimizer = tf.train.GradientDescentOptimizer(0.000001).minimize(loss)
sess = tf.InteractiveSession()
sess.run(tf.global_variables_initializer())
for i in range(10000):
sess.run(optimizer,{x:xs,label:ys})
if i%100 == 0: print(i,sess.run(w))
print(sess.run(w))
あなたは第万反復の後に見ることができるよう、ipythonコンソールでプリントアウトされ、Wの値は、誰もが上のいくつかの光を当てることができれば、私は本当に感謝の周りの4.53代わりに、正しい値の6 です何がここで間違っているのか。私は0.01から0.0000001までのさまざまな学習率で遊んだが、設定のどれもが6に収束することはできない。標準正規分布に正規化することを提案しているが、これを正規化するかどうかを知りたい。必要がありますか?正規化なしでは、勾配勾配は解を見つけることができませんか?どうもありがとうございました!
は 'randbetween'が0と0.1の代わりに渡された場合はどう-2,2、 –
あなたの学習率は非常に低いです。いくつの異なる価値がありますか? (あなたのExcelにはいくつの行がありますか?)その数値が小さすぎると問題が発生する可能性があります... 十分なデータがある場合(十分に大きい範囲の場合)、正規化なしで収束する必要があります。 – gdelab
@gdelabデータセットには約160データポイントが含まれています。私は0.1や1のようなもっと大きな学習率で遊んだことがありますが、役に立たないのです。私は10000回反復することでモデルはまだ収束するはずだと思った – Rookie