y = x * 0.1 + 0.3 となる、ダミーのデータポイント x_data, y_data を NumPy で作成します。
そして y_data = W * x_data + b となる W と b の適正値を TensorFlow に見つけさせます。
import tensorflow as tf
import numpy as np
x_data = np.random.rand(100).astype("float32")
y_data = x_data * 0.1 + 0.3
W = tf.Variable(tf.random_uniform([1], -1.0, 1.0))
b = tf.Variable(tf.zeros([1]))
y = W * x_data + b
loss = tf.reduce_mean(tf.square(y - y_data))
optimizer = tf.train.GradientDescentOptimizer(0.5)
train = optimizer.minimize(loss)
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
for step in xrange(201):
sess.run(train)
if step % 20 == 0:
print(step, sess.run(W), sess.run(b))
sess.close()
4-5 行目: y = x * 0.1 + 0.3 となる、ダミーのデータポイント x, y を NumPy で作成します。
7 行目: random_uniform は一様分布から乱数生成。第一引数は shape。
8 行目: zeros は全ての要素を 0 に設定したテンソルを作成。第一引数は shape。
11, 13 行目: 平均二乗誤差を最小化します。
12 行目: アルゴリズムは勾配降下法。第一引数は学習率。
15 行目: 開始前に変数を初期化します。これを最初に’実行’します。
17 行目: グラフを launch します。
20-23 行目: 直線を最適化します。ベストフィットが W: [0.1], b: [0.3] と学習します。
25 行目: セッションはリソースを解放するために閉じるべきです。
【参考】
(翻訳/解説)TensorFlow : GET STARTED : 序説
【補遺】
* CPU モードで動作確認済み。