TensorFlowプログラミングの流れ

TensorFlowは機械学習のための数値計算ライブラリです。
TensorFlowは非常の高度な機械学習を行うことができますが、使用方法がすこし難しいです。

そこで今回TensorFlowの基本的なプログラミングの流れを調べました。

 

 

 

使用環境

使用しているTensorFlow等のヴァージョンを以下に示します。

 

種類 Version
Python 3.6
  TensorFlow with GPU support 1.8.0

 

Define and Run

TensorFlow を用いたプログラミングは、 Define and Runで行われます。
このDefine and Runの反対に当たるのがDefine by Run です。

普通にPython等でプログラミングを行っている場合は、Define by Run でプログラミングを行います。

 

具体的な例を挙げます。まずDefine by Runの例です。

この例では変数a に10を、b に5を代入し、c に  a + b の結果を代入しています。

一方で Define and Runの場合は下記のようになります。

tf.Variable() は変数を、 tf.add(a,b) は変数aとbを足す演算です。

上記の例の場合、c には  a + b の結果が格納されているわけではなく、 tf.add(a,b) を行うという情報が格納されているだけです。

Define and Run ではこのあと明示的に c を実行しなければなりません。

 

プログラミングの流れ

TensorFlowでのプログラミングは次のような流れで行われます。

 

  1. 推論・学習に用いるデータセットを用意する。
  2. 変数とplaceholderの設定
  3. ハイパーパラメータの設定
  4. モデル(ネットワーク)の定義
  5. 損失関数の設定
  6. モデルの初期化
  7. 学習
  8. 評価
  9. ハイパーパラメータの再設定

 

TensorFlowではまず画像や数値等のデータセットを用意します。これがなければ推論も学習もできません。また教師あり学習を行う場合には学習に使用する教師データも用意する必要があります。

 

TensorFlowで使用する変数は tf.Variable() や tf.placeholder() で設定します。placeholderはデータを入力するための入れ物で、実際に計算が実行されるときに値を入れます。そのため定義の段階ではデータは未定です。

 

ハイパーパラメータとは学習率や学習回数などの、人が考え事前に与えておくパラメータのことです。このハイパーパラメータは学習に非常に重要で、一度学習したあとパラメータを調整し再度学習を行いより良い結果を目指します。

 

 

単純な例

TensorFlowによる簡単な計算の例を示します。

 

実行結果を示します。

 

このプログラムは次のような動作を行っています。

  • TensorFlowの計算ではまず初めに変数・定数の定義を行っています。(3~4行目)
  • その後計算モデルの設定を行います。(6行目)今回は単純に定数aと変数bを足し合わせます。
  • 8行目では変数の初期化の設定を行います。初期化を行わないとエラーが出ます。 tf.global_variables_initializer() ではすべての変数を一括で初期化できます。
  • tf.Session() から実際に計算を行っていきます。 tf.Session() は計算実行の管理を行っている関数です。
  • sess.run() で実際の計算を実行していきます。

 

まとめ

  • TensorFlowのプログラミングはDefine and Runで行っていく。
  • Define and Run で計算を記述してもその場で実行するのではなく、後で明示的に実行する必要がある。

 

 

関連記事

ニューラルネットワーク・ディープラーニングのまとめ

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA