2017-07-13 6 views
2

こんにちは私はTensorflowがトレーニングデータ用に選択した数字が気に入らないという問題に直面しています。私はTensorflowの「Getting started」チュートリアルからコードを借りましたが、x_trainy_trainのデータリストを別のものに置き換えました。リストx_trainy_trainでそれらの値のために今Tensorflowがリスト内の数字を正しく認識しない

import numpy as np 
import tensorflow as tf 

# Model parameters 
W = tf.Variable([.3], dtype=tf.float32) 
b = tf.Variable([-.3], dtype=tf.float32) 
# Model input and output 
x = tf.placeholder(tf.float32) 
linear_model = W * x + b 
y = tf.placeholder(tf.float32) 
# loss 
loss = tf.reduce_sum(tf.square(linear_model - y)) # sum of the squares 
# optimizer 
optimizer = tf.train.GradientDescentOptimizer(0.01) 
train = optimizer.minimize(loss) 
# training data 
x_train = [1.0, 1.5 ,3.0, 6.0, 8.0, 9.0, 11.0, 12.0,38.0 ,41.0, 82.0] 
y_train = [9.5,10.75,14.5,22.0,27.0,29.5,34.5,37,102.0,109.5,212.0] 
# training loop 
init = tf.global_variables_initializer() 
sess = tf.Session() 
sess.run(init) # reset values to wrong 
#print(sess.run(init)) 
for i in range(1000): 
    sess.run(train, {x:x_train, y:y_train}) 

# evaluate training accuracy 
curr_W, curr_b, curr_loss = sess.run([W, b, loss], {x:x_train, y:y_train}) 
print("W: %s b: %s loss: %s"%(curr_W, curr_b, curr_loss)) 

コード出力Nan。私は、それぞれ2.5と7.0に収束しWbの値を期待している:それは働くためにオリジナルx_trainy_trainデータが

x_train = [1,2,3,4] 
y_train = [0,-1,-2,-3] 

EDITです。

+0

エラーはありませんか?しかし、 'W'、' b'、 'loss'(現在の値)のNaN値は頭痛の原因になっていますか? –

+0

これは違いがありますが、ワーキングリストと混合値には 'int'値だけでなく、動作しないリストの余分な空白文字があるのか​​どうかわかりません。配列をフォーマットし、データ型を指定します。 – Chris

+0

@Chrisは変数を浮動小数点として宣言していますので、テンソルフローは 'ints 'のように見えてもそれらをdtypeにキャストします。 –

答えて

1

問題はオプティマイザの学習速度にあります。非常に異なるスケールでいくつかの配列への入力を変更したので、モデルの適切な学習率は異なります。あなたの入力でいくつかの正規化手法を使用してこのような問題を回避することができますが、正しい値を見つけるまで学習速度を調整することができます。テストのカップルの後、私はあなたのケースでは1e-5のようなものが動作する必要があることが見つかりました:

optimizer = tf.train.GradientDescentOptimizer(1e-5) 

より一般的に、この場合の問題点は、あなたの入力が非常に不均一に分布していることです。ほとんどの例は40歳以下ですが、100歳前後のカップルと200歳以上のカップルがあります。これらの最後の3つは、他のすべてよりもトレーニングの更新に大きな影響を与えます。たとえば、その中にノイズがあると、モデル全体に​​大きな影響を与えます。

+0

ありがとう!学習率を修正することで問題は解決しました。私はこれを将来に留めておきます。 –

関連する問題