書籍転載:TensorFlowはじめました ― 実践!最新Googleマシンラーニング(3)
TensorFlowの“テンソル(Tensor)”とは? TensorBoardの使い方
転載3回目。テンソル(Tensor)とTensorBoardによるグラフの可視化を解説する。「第1章 TensorFlowの基礎」は今回で完結。
前回はTensorFlowの基礎として、変数とプレースホルダーを説明しました。今回は、テンソル(Tensor)とTensorBoardによるグラフの可視化を解説します。
書籍転載について
本コーナーは、インプレスR&D[Next Publishing]発行の書籍『TensorFlowはじめました ― 実践!最新Googleマシンラーニング』の中から、特にBuild Insiderの読者に有用だと考えられる項目を編集部が選び、同社の許可を得て転載したものです。
『TensorFlowはじめました ― 実践!最新Googleマシンラーニング』(Kindle電子書籍もしくはオンデマンドペーパーバック)の詳細や購入はAmazon.co.jpのページをご覧ください。書籍全体の目次は連載INDEXページに掲載しています。プログラムのダウンロードは、「TensorFlowはじめました」のサポート用フォームから行えます。
ご注意
本記事は、書籍の内容を改変することなく、そのまま転載したものです。このため用字用語の統一ルールなどはBuild Insiderのそれとは一致しません。あらかじめご了承ください。
■
1.4 テンソル(Tensor)
TensorFlowは、グラフを構成するすべてのオペレーションを「Tensor(テンソル)」として扱います。以後、TensorFlowの文脈で触れる「Tensor」は、「n次元の多次元配列」と考えて差し支えありません。
RankとShape, Type
Rankは「テンソルの階数」、Shapeは「テンソルの形」を言います(表1.1)。
Rank | Shape | Dimension | 例 |
---|---|---|---|
0 | [] | 0次元 | s = 713 |
1 | [D0] | 1次元 | v = [1.1,2.2,3.3] |
2 | [D0, D1] | 2次元 | m = [[1,2,3],[4,5,6],[7,8,9]] |
3 | [D0, D1, D2] | 3次元 | t = [[[1,2,3]],[[4,5,6]],[[7,8,9]]] |
N | [D0,D1, ...Dn-1]n | n次元 |
また、Tensorにはデータ型があります(表1.2)。
Pythonでの型 | 解説 |
---|---|
tf.float16 | 16ビット浮動小数点 |
tf.float32 | 32ビット浮動小数点 |
tf.float64 | 64ビット浮動小数点 |
tf.int8 | 8ビット整数 |
tf.int16 | 16ビット整数 |
tf.int32 | 32ビット整数 |
tf.int64 | 64ビット整数 |
tf.uint8 | 符号無し8ビット整数 |
tf.string | 可変長文字列 |
tf.bool | 真偽値 |
たとえば画像データを表す場合、TensorのRankは[3]
、Shapeは[width, height, channel]
、データ型はtf.uint8
*3となります。
TensorFlowのウェブサイト*4に、より詳細な表があります。
Rankが一致しないテンソルは演算できないなど、Tensorに起因するエラーに遭遇することは少なくありません。必要に応じて確認できるようにしておくと良いでしょう。
- *3 ただしConvolutional Neural Networkで処理する場合は
tf.float32
に変換する必要があります。 - *4 TensorFlow Tensor Ranks, Shapes, and Types : https://www.tensorflow.org/versions/r0.9/resources/dims_types.html
1.5 TensorBoardによるグラフの可視化
TensorFlowには、強力な可視化ツール「TensorBoard」が搭載されています。TensorBoardを使えばグラフを可視化して、Webブラウザ上で見ることができます。
グラフの書き出し
TensorBoardで読み込める形式でデータを出力します。
const1 = tf.constant(2)
const2 = tf.constant(3)
add_op = tf.add(const1, const2)
mul_op = tf.mul(add_op, const2)
with tf.Session() as sess:
result, result2 = sess.run([mul_op, add_op])
print(result)
print(result2)
tf.train.SummaryWriter('./', sess.graph)
|
リスト1.11を実行すると、スクリプトと同じディレクトリにTensorBoard用のファイル*5が作成されます。
- *5 ただしConvolutional Neural Networkで処理する場合は
tf.float32
に変換する必要があります。
TensorBoardの起動
次に、TensorBoardを起動します。TensorFlowがインストールされていれば、コマンドtensorboard
で起動できます。
引数--logdir
には、tf.train.SummaryWriter
に指定した出力先のディレクトリを指定します。
$ tensorboard --logdir=[TensorBoard用のファイルがあるディレクトリ]
Starting TensorBoard b'16' on port 6006
(You can navigate to http://0.0.0.0:6006)
|
ブラウザでhttp://localhost:6006
にアクセスして、上部メニューから「GRAPH」を選択すると、構築したグラフ画像が表示されます。画像を見れば、オペレーション同士がどう結びついているのか視覚的に確認することができます。
また、グラフを構成する各オペレーションをクリックすると、詳細な情報を確認できます。例えば図1.7を見れば、オペレーションMul
は、オペレーションAdd
と定数Const_1
の入力を受けていることがわかります。
この他にもTensorBoardには、学習中のモデルのパラメーターをグラフとして表示するなど、便利な機能がたくさんあります。
TensorBoardの詳細は、Webサイト*6を参照してください。
- *6 TensorBoard Visualizing Learning : https://www.tensorflow.org/versions/r0.9/how_tos/summaries_and_tensorboard/index.html
■
以上で「第1章 TensorFlowの基礎」は完結です。次回からは「第2章 CIFAR-10の学習と評価」を転載します。
※以下では、本稿の前後を合わせて5回分(第1回~第5回)のみ表示しています。
連載の全タイトルを参照するには、[この記事の連載 INDEX]を参照してください。
1. TensorFlowとは? データフローグラフを構築・実行してみよう
技術書オンリー即売会「技術書典」で頒布された同名出版物をベースとして制作されたTensorFlowの入門書籍を転載開始。その1回目として、データフローグラフや定数といったTensorFlowの基礎を説明する。
3. 【現在、表示中】≫ TensorFlowの“テンソル(Tensor)”とは? TensorBoardの使い方
転載3回目。テンソル(Tensor)とTensorBoardによるグラフの可視化を解説する。「第1章 TensorFlowの基礎」は今回で完結。
4. TensorFlowでデータの読み込み ― 画像を分類するCIFAR-10の基礎
転載4回目。今回から「畳み込みニューラルネットワーク」のモデルを構築して、CIFAR-10のデータセットを使った学習と評価を行う。今回はデータの読み込みを説明。
5. TensorFlowによる推論 ― 画像を分類するCIFAR-10の基礎
転載5回目。CIFAR-10データセットを使った学習と評価を行う。画像データの読み込みが終わったので、今回は画像の種類(クラス)を判別、つまり「推論」について説明する。