TensorFlowは、Googleが開発する深層学習フレームワークです。名前の Tensor(テンソル)の通り、多次元配列の演算を中心にニューラルネットワークを組み立て、誤差逆伝播で学習し、本番で推論まで回す——Kerasの「層を積むAPI」はその上に載る層です。本記事はバージョン履歴より、「フレームワークが何を肩代わりするか」に焦点を当てます。
試験で問われる見方
TensorFlow単独の定義問題はまだ少ないですが、深層学習の実装基盤として押さえます。テンソル演算が大量に発生し、GPUやTPUで高速化される(G-010、G-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はソフトウェアです。実際の高速化はGPUやCUDA、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)。