2017-09-16 10 views
2

私は以下のコードを私に説明する助けが必要です。私はTensorFlowに新しいのようなものだけど、私は変数を表し、X、B、Wとyを何TensorFlowコードヘルプ - 入門例

import tensorflow as tf 

# Model parameters 
#Why are variables initialize with .3 and -.3 
W = tf.Variable([.3], dtype=tf.float32) 
b = tf.Variable([-.3], dtype=tf.float32) 

の下のコード内で定義された具体的な質問がありますか?

# Model input and output 
x = tf.placeholder(tf.float32) # this is the input 
linear_model = W * x + b  # this is the linear_model operation 
y = tf.placeholder(tf.float32) # Is this the output we're trying to predict. 

0.01のパラメータ値を渡すコードがGradientDescentOptimizer関数に渡されるのはなぜですか?

# loss - measure how far apart the current model is from the provided data. 
loss = tf.reduce_sum(tf.square(linear_model - y)) # sum of the squares 
# optimizer 
optimizer = tf.train.GradientDescentOptimizer(0.01) # Why are we passing the value '0.01' 
train = optimizer.minimize(loss) 

ここにy_trainは何を表していますか?

# training data 
x_train = [1, 2, 3, 4] # the input variables we know 
y_train = [0, -1, -2, -3] # 

# training loop 
init = tf.global_variables_initializer() # init is a handle to the TensorFlow sub-graph that initializes all the global variables. Until we call sess.run, the variables are unitialized 
sess = tf.Session() # Sesson encapsulates the control and state of the TensorFlow runtime. ITs used to evaluate the nodes, we must run the computational graph within a session 
sess.run(init) # reset values to wrong 
for i in range(1000): 
    sess.run(train, {x: x_train, y: y_train}) 

ここで、変数curr_W、curr_bはどのような意味を表しますか?

# evaluate training accuracy 
# Why does the variables W and b represent? 
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)) 

のコード例では、Tensorflowのウェブサイトから来ている:https://www.tensorflow.org/get_started/get_started#complete_program

答えて

0

x、b、Wおよびy変数は、どのような値を表しますか?

これらはモデルが使用する記号変数です - 入力、出力、ニューラルネットワークのパラメータです。 xyはデータで、変更されないため、tf.placeholderと定義されています。 Wおよびyは、学習可能なパラメータである(TF用語で訓練可能)。初期値はこれらのパラメータの次元より重要ではありません(実際はnot exactlyですが、これは高度なトピックです)。この例では、Wbの両方が1次元ですが、通常はWが行列、bがベクトルです。

一緒に定義されたすべての変数は、計算グラフと呼ばれます。

GradientDescentOptimizer関数に0.01のパラメータ値を渡すコードはなぜですか?

これは、のです。簡単に言えば、目標関数lossを最適化するときにエンジンが作成しているステップサイズです。学習率は通常0に近いが、正確な値は多くの要因に依存する。実際には、手動で試してみることが一般的なハイパーパラメータの1つです。 0.01は良い出発点のようですが、それは多くの場合十分です。

ここにy_trainは何を表していますか?

x_train,およびy_trainはトレーニングデータです。最初のデータは入力データで、2番目のデータは予想されるラベルです。この場合、入力1は結果0になり、入力21と続きます。うまくいけば、ネットワークは、これらの4つの例から、「マイナス1」操作を学ぶべきであることを理解しています(注意:ニューラルネットワークは完全に適合する単なるリニアモデルです)。これは教師あり学習と呼ばれています。

ここで、変数curr_W、curr_bはどのような意味ですか?

まず第一に、Wbがシンボリック変数でありながらcurr_Wcurr_bは、通常のPythonの変数であることに注意してください。記号変数は、計算がどのように構成され、トレーニング中に異なる値をとるかを定義します。 curr_Wcurr_bは、いくつかの反復後の値の1つに過ぎません。基本的に、モデルのスナップショットを撮り、それをプリントアウトして、ニューラルネットワークが何を学んだのかを確認します。結果値-11(ほぼ)は、神経回路網が線形変換に成功したことを意味します。

+0

私のコード例の偏りと重みの値は何ですか? –

+0

'W'と' b'の初期値は0.3と-0.3です。答えに記載されているように、それほど重要ではありません。その後、訓練中、これらの値は常に変化します(良い練習 - 各反復でそれらを印刷します)。最後に、-1と1に近づくまでです。 – Maxim

0

X、W B、およびY変数が何を表しているのでしょうか?

xは入力であり、bはこれらの入力に対するバイアスであり、Wはこれらの入力に対する重み行列であり、yはこれらの入力に対する目標値である。

ここのような教師付き学習モデルを訓練するには、トレーニングデータが必要です。あなたはこれです:

# training data 
x_train = [1, 2, 3, 4] # the input variables we know 
y_train = [0, -1, -2, -3] # 

y_trainは入力値[1,2,3,4]に対応する目標値です。

curr_W, curr_b 

は、1回のトレーニングの後、モデルの現在の重みと偏りです。

+0

速い応答に感謝します。 y_trainはなぜ目標値にすぎないのですか? –

+0

それ以外に何が欲しいですか?これは大会です。 x =入力値およびy =それらの同じ入力に対する対応する目標値。 –

+0

私は目標値によって何を意味するのでしょうか?私はこの初心者ですML –