コンテンツにスキップ

Python/TensorFlow

出典: フリー教科書『ウィキブックス(Wikibooks)』

TensorFlow

[編集]

TensorFlowは、Googleが開発したオープンソースの数値計算ライブラリであり、ニューラルネットワークなどの機械学習アプリケーションの実装に使用されます。TensorFlowには、グラフによる計算の最適化、自動微分機能、分散処理などの高度な機能が含まれており、複雑な機械学習モデルの実装に非常に便利です。また、Python、C++、Java、Goなどの言語をサポートしており、開発者が使いやすいように設計されています。

インストール

[編集]

TensorFlowをインストールする必要があります。ターミナルで以下のコマンドを実行してください。

$ sudo pip install tensorflow

[編集]

TensorFlowはそのサイトにチュートリアルを用意しており、TensorFlowを学ぶ上で役立つでしょう。ただし、翻訳が不正確なページが多いため、可能な限り英語版を読むことをおすすめします。

次に、TensorFlowを使って線形回帰を行う例を見ていきましょう。

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# トレーニングデータを生成
X_train = np.linspace(0, 10, 100)
Y_train = X_train * 2 + np.random.randn(*X_train.shape) * 0.33

# 入力のプレイスホルダーを設定
X = tf.placeholder("float")
Y = tf.placeholder("float")

# モデルのパラメータを設定
w = tf.Variable(0.0, name="weights")
b = tf.Variable(0.0, name="bias")

# モデルを定義
Y_pred = tf.add(tf.multiply(X, w), b)

# コスト関数を定義
cost = tf.reduce_mean(tf.square(Y_pred - Y))

# 最適化アルゴリズムを設定
learning_rate = 0.01
optimizer = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)

# トレーニングを開始
init = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init)
    for epoch in range(100):
        for x, y in zip(X_train, Y_train):
            sess.run(optimizer, feed_dict={X: x, Y: y})
    print(sess.run(w))
    print(sess.run(b))

# 結果をプロット
plt.plot(X_train, Y_train, "ro", label="Training data")
plt.plot(X_train, X_train * sess.run(w) + sess.run(b), label="Fitted line")
plt.legend()
plt.show()

このコードでは、TensorFlowを使って線形回帰モデルを定義し、トレーニングデータを使って最適化します。最適化には勾配降下法が使われます。また、モデルパラメータにはTensorFlowの変数を使います。

最後に、結果をプロットしています。トレーニングデータにおおよそ合致する線形モデルが得られるはずです。

TensorFlowには多くの機能があり、深層学習のフレームワークとして広く使われています。この簡単な例でしたが、本格的に深層学習を行うにあたっての基礎的な知識を得ることができました。