レッスン2…TensorFlow プログラミングの基礎知識

第 2 特集
第
2章
ご購入はこちら
データの入出力 / 型 / 構造から実行メカニズムまで
レッスン 2…TensorFlow
プログラミングの基礎知識
渡邉 輝
表 1 TensorFlow のデータ型一覧
[ノード]演算処理
X1
データ型
足す
掛ける
X2
[エッジ]
データの流れ
X3
(X1+X2)
×X3
図 1 TensorFlow の基本概念「グラフ」のイメージ
データがエッジ(矢印線)によって流れノードでデータに対しての演算処
理が実行される.エッジは必ず一方通行で両方向になることはない.そ
の性質から有向非巡回グラフとも呼ばれる
ここでは前章で構築した開発環境を利用して,コー
ディングをしながら TensorFlow の基本への理解を深
めていきます.
● 準備…開発環境の立ち上げ
Docker で 開 発 環 境 を 作 成 し た 方 は,Docker
Quickstart Terminal を立ち上げ,TensorFlow 開発用
コンテナを起動し(docker start コマンド),コンテナ
OS にアクセスしたら Jupyter Notebook を起動してく
ださい(jupyter notebook コマンド).
マシンに直接インストールした方は,ターミナルま
たはコマンド・プロンプトから Jupyter Notebook だ
けを起動します.ブラウザから Jupyter Notebook へ
アクセスし,サンプル・コーディング用の新規ファイ
ルを作成したら準備完了です.
● 各ノードをエッジでつないだものがグラフ
TensorFlow は「グラフ」という概念に基づいて算術
演 算 を 実 装 す る よ う 設 計 さ れ て い ま す. 従 っ て
TensorFlow を利用する場合には,
「グラフ」とは何か,
それをどのように実装,実行するのかを理解しなけれ
ばなりません.
グラフを構成する要素はノードとエッジです
(図 1).ノードは丸や四角で表現され,特定の演算処
理を実装します.エッジはノードをつなぐ矢印線で
データの流れを表現します.1 つのノードの観点から
64
Python の型
説 明
32 ビット浮動小数点
DT_FLOAT
DT_DOUBLE
DT_INT8
DT_INT16
DT_INT32
DT_INT64
DT_UINT8
DT_UINT16
tf.float32
tf.float64
tf.int8
tf.int16
tf.int32
tf.int64
tf.uint8
tf.uint16
DT_STRING
tf.string
DT_BOOL
tf.bool
真偽値
DT_COMPLEX64
tf.complex64
32 ビット浮動小数点を
2 つ使う複 素 数( それ
ぞれ実数部分と虚数部
分を表現する)
64 ビット浮動小数点
8 ビット符号あり整数
16 ビット符号あり整数
32 ビット符号あり整数
64 ビット符号あり整数
8 ビット符号なし整数
16 ビット符号なし整数
変 数 長のバイト配 列
( テンソルの各 要 素が
バイト配列)
DT_COMPLEX128 tf.complex128
64 ビット浮動小数点を
2 つ使う複 素 数( それ
ぞれ実数部分と虚数部
分を表現する)
DT_QINT8
tf.qint8
量子化された処理に使
われる 8 ビット符号あ
り整数
DT_QINT32
tf.qint32
量子化された処理に使
われる 32 ビッ ト符 号
あり整数
DT_QUINT8
tf.quint8
量子化された処理に使
われる 8 ビット符号な
し整数
見ると,自分自身に向けられたエッジは入力を意味
し,外向きのエッジは演算後の出力を意味します.つ
まり,グラフとは一連の演算処理です.データがエッ
ジによって流れを制御され,ノードに実装された演算
処理によって次々と姿を変えていくことになります.
TensorFlow はグラフを構築するための部品を提供し
ます.
● グラフ内に流せるデータはテンソルという構
造をとる
グラフ内に流すことのできるデータはテンソルとい
2017 年 3 月号