TensorFlowの概要
TensorFlow(※1,※2)は、データフローグラフを使用した深層学習(Deep Learning)向けの数値計算用のオープンソースソフトウェアライブラリです。
Googleの機械学習チームであるGoogle Brain(※3)によって開発され、2015年11月に公開されました。
このライブラリはGoogleのDeepDreamやGoogle Cloud Vision APIといったサービスで利用されている技術の一部が公開されたものです。
TensorFlowを利用することで、多次元行列(tensor)に対する段階的な計算処理(flow)を簡単に実装することができます。
ただし、TensorFlowは計算処理の実装用のライブラリであり、対象となる計算処理モデル(計算グラフ)はユーザ自身で考案する必要があります。
TensorFlowは様々な用途で利用されています。例えば、オンラインストアの商品カテゴリの自動分類や、クラウドサービスへの不正アクセスの検出、画像認識を使った農家の出荷における自動仕分け(※4)などへの利用も考案されているようです。
手書き文字認識については、MNISTデータセットを用いた例が公式のチュートリアルとして用意されています(※5)。
TensorFlowの主な特徴
機能紹介
TensorFlowは下記のような特徴を持っています。
- 演算・制御機能
関数としては基本的な行列/配列演算の他、確立分布を求めるためのソフトマックス関数やシグモイド関数などが用意されています。
また、演算結果を保存したり、読み込むための関数や、TensorFlowの機能を利用するための関数や、訓練アルゴリズムにおいてよく用いられる勾配計算もサポートされています。
こういった演算を制御するためのif条件式、while条件式などの制御もTensorFlowの機能として備わっています。
- 複数デバイスのサポート
TensorFlowは単一デバイスでの実行の他、GPUなどを用いた複数デバイスでの処理が考慮された設計になっています。
各デバイスへの処理やデバイス間通信はコストなどを計算して自動的に割り当てられますが、ユーザが手動で指定することも可能です。
また、自動割り当てであっても、「この処理はGPU上のみで実行する」などの制約を課すこともできます。
- 部分実行可能なアーキテクチャ
TensorFlowは、基本的にユーザが規定したグラフを逐次計算しますが、グラフ中の演算を最低限のコストで部分的に実行することができます。
演算機能の項でも挙げましたが、部分的に実行した結果は保存・読み出しをすることも可能です。
- TensorBoard
TensorFlowには、ユーザが自身で考案した計算グラフや、各グラフの実行時間などを可視化するツールである、TensorBoardが備えられています。
ユーザはこのツールを利用することで、考案したグラフやその計算結果の全容を容易に理解することができます。
TensorFlowの動作環境
TensorFlow 2.x の動作環境は以下の通りです。
- Windows 7以降(C++ 再頒布可能パッケージをインストール済み)
- macOS 10.12.6(Sierra)以降(GPU はサポート対象外)
- Ubuntu 16.04 以降
- Raspbian 9.0 以降
- Python 3.5 ~3.8(3.8はTnsorFlow2.2以降のみ対応)
- Cuda Toolkit(GPU利用の場合のみ)
Cuda Toolkit : 10.0以降(Linux の場合。OSにより異なる)
cuDNN SDK:7.4以降(Linux の場合。OSにより異なる)
TensorFlowのライセンス
TensorFlowのライセンスは、 「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
TensorFlowのサポート
現在、OpenStandiaではTensorFlowのサポート提供は行っておりません。
参考サイト
(※1)TensorFlow -- an Open Source Software Library for Machine Intelligence
https://www.TensorFlow.org/
(※2)TensorFlow Large-Scale Machine Learning on Heterogeneous Distributed Systems
https://download.TensorFlow.org/paper/whitepaper2015.pdf
(※3)Google Brain Team
https://research.google.com/teams/brain/
(※4)Google Cloud Platform Japan 公式ブログ: キュウリ農家とディープラーニングをつなぐ TensorFlow
https://googlecloudplatform-japan.blogspot.jp/2016/08/TensorFlow_5.html
(※5) MNIST For ML Beginners
https://chromium.googlesource.com/external/github.com/tensorflow/tensorflow/+/r0.10/tensorflow/g3doc/tutorials/mnist/beginners/index.md
Distributed TensorFlowの話
https://qiita.com/kazunori279/items/981a8a2a44f5d1172856
GitHub
https://github.com/tensorflow/tensorflow