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 モードで動作確認済み。