モデル・技術

TensorFlowとは?名前の通りテンソルで回す——Google製の学習からデプロイまでのDL基盤

読み:テンソルフロー / 英:TensorFlow

更新日: 読了目安:約7分

TensorFlowは、Googleが開発する深層学習フレームワークです。名前の Tensor(テンソル)の通り、多次元配列の演算を中心にニューラルネットワークを組み立て、誤差逆伝播で学習し、本番で推論まで回す——Kerasの「層を積むAPI」はその上に載る層です。本記事はバージョン履歴より、「フレームワークが何を肩代わりするか」に焦点を当てます。

試験で問われる見方

TensorFlow単独の定義問題はまだ少ないですが、深層学習の実装基盤として押さえます。テンソル演算が大量に発生し、GPUやTPUで高速化される(G-010G-118)——フレームワークはその演算を書きやすくするソフトウェア層です。

誤答では、TensorFlow=GPU、TensorFlow=Kerasそのもの、TensorFlow=学習済みモデル——などのすり替えに注意します。

テンソルが中心

ディープラーニングの計算は、行列・3次元以上の配列——テンソル——の掛け算、足し算、活性化関数の適用の繰り返しです。画像は [高さ, 幅, チャネル]、ミニバッチなら先頭にバッチ次元が付きます。

TensorFlowは、このテンソル演算を宣言的に記述し、計算グラフとして組み立て、自動微分で勾配を求める基盤です。手書きで偏微分を全部書く代わりに、フレームワークが誤差逆伝播の連鎖を担います(G-171)。

  • 順伝播 — 入力テンソルから出力・損失を計算(G-117)
  • 逆伝播 — 損失から各パラメータの勾配を自動計算
  • 更新勾配降下法などで重みを更新

フレームワークが担う仕事

TensorFlowのようなフレームワークが肩代わりするのは、だいたい次の領域です。

領域内容開発者が書かなくてよくなること
モデル定義層の積み上げ・関数型API個々の行列演算の実装
学習ループデータ読み込み・エポック管理勾配計算の連鎖律
デバイス配置CPU/GPU/TPUへの演算割り当て低レベル並列化の細部
デプロイSavedModel・サーバ推論本番向けグラフ最適化の一部

試験では製品名の暗記より、「フレームワーク=学習の実装環境」という位置づけが再利用しやすいです。

Kerasとの二層構造

初学者が触るのはしばしば tf.keras——KerasがTensorFlowに統合された高水準API——です。Sequentialに層を足し、compileで損失と最適化を指定し、fitで学習——宣言的にモデルを組み立てるスタイルです。

役割比喩
TensorFlowテンソル演算・自動微分・実行エンジンエンジン本体
Keras(tf.keras)層を積む・fitするAPIハンドルとダッシュボード

Keras記事でも述べた通り、同じではない——試験のすり替えで「Keras=TensorFlow全体」と答えないことが重要です。

GPU・TPUとの関係

TensorFlowはソフトウェアです。実際の高速化はGPUCUDA、GoogleのTPU(Tensor Processing Unit)といったハードウェア上で起きます(G-119、TF-056)。

  • GPU — 汎用並列演算。テンソル演算の並列化に広く使われる(G-010)
  • TPU — Google製のML向けASIC。TensorFlowとの親和性が高いと語られる
  • フレームワーク — 同じPythonコードを、利用可能なデバイスに演算を振り分ける

「TensorFlowを使えばTPUが付いてくる」わけではありません。クラウドやオンプレの計算資源とフレームワークは別軸です。

PyTorch・ONNXとの整理

製品種類TensorFlowとの関係
PyTorch競合フレームワークどちらも学習用。動的グラフ・研究寄りはPyTorch、Google系・本番寄りはTFと語られることも
JAX別系統の数値計算+自動微分Google系だがTensorFlowそのものではない
ONNXモデル交換フォーマットTFで学習したモデルをONNXへ書き出し、別環境へ運ぶ
TensorRT推論最適化ランタイム学習はTF、本番推論の高速化はTensorRT——役割分担

フレームワーク(学習)・交換規格(ONNX)・推論エンジン(TensorRT、ONNX Runtime)はパイプラインの別ステージ。一枚の名前で全部を指すと混乱します。

すり替えに注意

誤った説明正しい理解
TensorFlow=Kerasフレームワーク全体 vs 高水準API層
TensorFlow=GPU / TPUソフトウェア vs ハードウェア(G-119)
TensorFlow=学習済みモデルモデルを作る・学習する環境 vs 成果物
TensorFlow=CNN実装基盤 vs ネットワークアーキテクチャ
TensorFlow=TensorRT学習フレームワーク vs 推論最適化ランタイム
GPUを使えば精度が必ず上がる高速化の話。精度はデータ・モデル・学習法に依存(G-010)

よくある質問

TensorFlowは何をするフレームワークですか?

多次元配列であるテンソル上でニューラルネットワークの演算を定義し、自動微分で勾配を求め、データを使ってパラメータを学習し、学習済みモデルを推論・デプロイするための深層学習基盤です。Keras API(tf.keras)を通じて層を積み上げてモデルを組み立てるのが一般的な使い方のひとつです。

TensorFlowとKerasは同じですか?

同じではありません。TensorFlowはテンソル演算・自動微分・分散学習などを含むフレームワーク全体です。Kerasはその上に載る高水準APIで、現在はTensorFlowに統合されtf.kerasとして提供されます。エンジン(TensorFlow)とハンドル(Keras)の関係に近いです。

TensorFlowはGPUやTPUですか?

いいえ。TensorFlowはソフトウェアの深層学習フレームワークです。GPUやTPUはハードウェアであり、TensorFlowはそれら上でテンソル演算を実行して学習や推論を高速化できます。TPUはGoogleがTensorFlowエコシステム向けに設計した専用プロセッサとして語られることがあります(G-119)。