どうも、とがみんです。
以前の記事でTensorFlowがどういうものなのかについて、また開発環境構築の方法について紹介しました。
この記事では、TensorFlowを用いてプログラムを組んでいくにあたって、重要な概念であるデータフロープログラミングと、
TensorFlowでのプログラムを組む流れについて紹介していきます。
データフロープログラミングとは
データフロープログラミングとは、オブジェクト指向プログラミングのような、機能や処理を中心に考えるのではなく、データを中心に考えていくアプローチのプログラミングです。
まず、事前に「データフローグラフ」と呼ばれるグラフを作成し、その後、グラフにデータを入力することで、結果が出力されるという流れで、プログラムを動かしてきます。
データフローグラフとは以下の図のようなものです。
青色の各ノードに、データの処理内容を記述し、それらにデータを流し込んでいくようにして、データを処理をしていきます。
また、図から「処理1」と「処理2」は互いに独立しているため、並列処理を行うことができます。
このように、データフロープログラミングは、処理の並列化を容易にし、大規模のデータを扱う際に適したプログラミングの手法です。
TensorFlowのプログラミングの流れ
実際にTensorFlowで、どのようにプログラムを組んでいくのかについて説明します。
プログラムを実行するまでのステップは主に以下の3ステップです。
- データの準備
- 処理内容の定義
- 処理の実行
以下のデータグラフをTensorFlowで実装しながら説明していきます。
データの準備
TensorFlowを利用するので、TensorFlowライブラリをインポートし、処理されるデータを準備します。
1 2 3 4 5 6 7 | import tensorflow as tf #データの準備 data_a = tf.constant(1) data_b = tf.constant(2) data_c = tf.constant(3) data_d = tf.constant(4) |
処理内容の定義
次に処理の内容を定義します。上図の青いノードに相当する部分です。
1 2 3 4 | #処理内容の記述 add1 = tf.add(data_a,data_b) add2 = tf.add(data_c,data_d) add3 = tf.add(add1,add2) |
処理の実行
最後に処理を実行します。
1 2 3 4 5 | #演算の実行 with tf.Session() as sess: print(sess.run(add3)) #出力=>10 |
演算を行う際は、sess = tf.Session()のようにSessionオブジェクトを作成する必要があります。
Session()は、計算を実行するクラスです。
runコマンドを実行することで結果が出力されます。
まとめ
TensorFlowを用いてプログラミングするにあたって重要な「データフロープログラミング」の概念と、簡単なプログラムを書くことを通してその実装の流れについて紹介しました。
参考文献
>コピペから脱却して自由に Deep Learning するための TensorFlow 再入門