TensorFlow情報
TensorFlowとは
TensorFlowは、データフローグラフを使用した深層学習(Deep Learning)向けの数値計算用のオープンソースソフトウェアライブラリです。
Googleの機械学習チームであるGoogle Brain(※1)によって開発され、2015年11月に公開されました。 このライブラリはGoogleのDeepDreamやGoogle Cloud Vision APIといったサービスで利用されている技術の一部が公開されたものです。 TensorFlowを利用することで、多次元行列(tensor)に対する段階的な計算処理(flow)を簡単に実装することができます。 ただし、TensorFlowは計算処理の実装用のライブラリであり、対象となる計算処理モデル(計算グラフ)はユーザ自身で考案する必要があります。
TensorFlowは様々な用途で利用されています。例えば、オンラインストアの商品カテゴリの自動分類や、クラウドサービスへの不正アクセスの検出、画像認識を使った農家の出荷における自動仕分け(※2)などへの利用も考案されているようです。 動作確認をしたい場合は、公式のチュートリアルとして用意されている、MNISTデータセットを用いた手書き文字認識のサンプルを利用してみるとよいでしょう(※3)。
主な特徴
機能紹介
TensorFlowは下記のような特徴を持っています。
- 演算・制御機能
関数としては基本的な行列/配列演算の他、確立分布を求めるためのソフトマックス関数やシグモイド関数などが用意されています。
また、演算結果を保存したり、読み込むための関数や、TensorFlowの機能を利用するための関数や、訓練アルゴリズムにおいてよく用いられる勾配計算もサポートされています。
こういった演算を制御するためのif条件式、while条件式などの制御もTensorFlowの機能として備わっています。
- 複数デバイスのサポート
TensorFlowは単一デバイスでの実行の他、GPUなどを用いた複数デバイスでの処理が考慮された設計になっています。
各デバイスへの処理やデバイス間通信はコストなどを計算して自動的に割り当てられますが、ユーザが手動で指定することもできます。
また、自動割り当てであっても、「この処理はGPU上のみで実行する」などの指定をすることもできます。
- 部分実行可能なアーキテクチャ
TensorFlowは、基本的にユーザが規定したグラフを逐次計算しますが、グラフ中の演算を最低限のコストで部分的に実行することができます。
「演算・制御機能」のセクションでも挙げましたが、部分的に実行した結果は保存・読み出しをすることもできます。
- TensorBoard
TensorFlowには、ユーザが自身で考案した計算グラフや、各グラフの実行時間などを可視化するツールである、TensorBoardが備えられています。
ユーザはこのツールを利用することで、考案したグラフやその計算結果の全容を容易に理解することができます。
- Define-by-Run
TensorFlow 2からは、「Define-by-Run」というアイデアを取り入れています。「Define-by-Run」は、深層学習フレームワークの一つであるChainerが最初に採用した概念で、ネットワークの構築と順伝播処理の実行を同時に行えるようにするため、途中の処理結果が確認でき、デバッグが楽になります。さらには途中の処理結果に応じて、処理内容を変更できます。
関連するOSS
- Keras
TensorFlowは汎用性が高く、低レベルなAPIが多いため、実装が煩雑になる傾向があります。TensorFlowを利用する高レベルなAPIであるKerasを使用することでコードを簡潔に書くことができます。
動作環境
TensorFlow 2.x の動作環境は以下の通りです。
- Windows 7以降(C++ 再頒布可能パッケージをインストール済み)
- macOS 10.12.6(Sierra)以降(GPU はサポート対象外)
- Ubuntu 16.04 以降
- Raspbian 9.0 以降
- Python 3.6 ~3.9(3.8はTensorFlow 2.2以降のみ対応)
-
Cuda Toolkit(GPU利用の場合のみ)
Cuda Toolkit : 10.0以降(Linux の場合。OSにより異なる)
cuDNN SDK:7.4以降(Linux の場合。OSにより異なる)
TensorFlowのライセンス
TensorFlowのライセンスは、 「Apacheライセンスバージョン2」(Apache License version2)というライセンスに基づいて公開され、営利、非営利を問わず、誰でも自由かつ無償で利用・改変・再配布できるようになっています。
オープンソース年間サポートサービス
OpenStandiaではOSSを安心してご利用いただけるように、オープンソース年間サポートサービスをご提供しております。
サポートしているOSSは下記ページをご参照ください。
関連OSS
-
PyTorch
パイトーチ。オープンソースのPythonの機械学習フレームワークです。
-
Keras
ケラス。TensorFlowの上で実行可能な高水準のニューラルネットワークライブラリです。
-
Deeplearning4j
ディープラーニングフォージェイ。Javaで実装されたディープラーニングのライブラリーであり、ディープラーニングのアルゴリズムを幅広くサポートしたフレームワークです。