この内容は古いバージョンです。最新バージョンを表示するには、戻るボタンを押してください。
バージョン:11
更新日時:2026-06-11 07:29:05
タイトル: TensorFlow(テンソルフロー)
SEOタイトル: TensorFlow とは?使い方・Keras・本番デプロイ(vs PyTorch)
本稿は TensorFlow (テンソルフロー) に関する記事です。
| この記事の要点 |
- TensorFlow は Google 製のディープラーニングフレームワーク。エコシステムが本番運用に強い
- API は Keras (
tf.keras) が高レベル標準。Sequential / Model で簡潔に書ける
- 本番デプロイの選択肢が多い: TF Serving、TFLite (モバイル)、TF.js (ブラウザ)、TPU 対応
- 研究実装の中心は PyTorch に移っている。新規研究プロトはそちらの方が多い
- 本番運用・Google エコシステム・モバイル/エッジ展開なら TensorFlow が依然強力
|
本ページの子ページ
TensorFlow とは?
TensorFlow は、Google が開発したオープンソースの機械学習・ディープラーニングフレームワークです。2015 年に公開されて以降、画像・音声・自然言語処理から検索・推薦・自動運転まで、Google 内外で広く採用されています。
2019 年の TensorFlow 2.x 以降は、Keras を高レベル API として一体化し、eager execution(命令型)を既定に変更。書き味は PyTorch にかなり近づきました。
主な特徴
| 特徴 | 説明 |
Keras 統合 (tf.keras) | 高レベル API でモデルを宣言的に組み立て |
| 本番運用エコシステム | TF Serving (REST/gRPC)、TFLite、TF.js、TFX |
| マルチプラットフォーム | Linux / Mac / Windows / Android / iOS / Web |
| GPU / TPU 対応 | CUDA、Google TPU (専用ハードウェア) を活用 |
| 分散学習 | tf.distribute でマルチ GPU / TPU / マルチノード |
| モバイル / エッジ | TFLite でスマホ・組込み・マイコンへ |
| ブラウザ実行 | TF.js で WebGL/WebGPU 上に推論 |
| 豊富な公式モデル zoo | TF Hub・Model Garden |
| 可視化 | TensorBoard で学習曲線・グラフ・埋め込みを可視化 |
関連プロダクトファミリー
| プロダクト | 用途 |
| TensorFlow Core | 本体ライブラリ |
Keras (tf.keras) | 高レベル API |
| TF Hub | 事前学習モデルの公開リポジトリ |
| TF Datasets | 主要データセットを tf.data で簡単に |
| TF Serving | 推論サーバ (REST/gRPC) |
| TFLite | モバイル・組込み・エッジ向け軽量推論 |
| TF.js | ブラウザ・Node.js での実行 |
| TFX | 本番 ML パイプライン (前処理・学習・検証・配信) |
| TensorBoard | 学習可視化 |
| JAX | 同じ Google 発の研究向けライブラリ (別系統) |
動作環境
| 項目 | 推奨 |
| 言語 | Python (主)、C++、Java、JavaScript (TF.js)、Swift |
| OS | Linux / macOS / Windows / Android / iOS |
| Python | 3.9〜3.12 (TF 版数で対応範囲が異なる) |
| GPU | NVIDIA CUDA 対応 (CUDA / cuDNN のバージョン整合が必須) |
| TPU | Google Cloud TPU・Colab TPU |
最小サンプル: Keras で MNIST 分類
|
import tensorflow as tf
# データセット読み込み
(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# モデル構築 (Sequential API)
model = tf.keras.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation="relu"),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation="softmax"),
])
model.compile(
optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"],
)
model.fit(x_train, y_train, epochs=5, validation_split=0.1)
model.evaluate(x_test, y_test)
|
本番デプロイの選択肢
| 配信先 | 手段 |
| サーバ (REST/gRPC) | TF Serving。SavedModel をロードして高速推論 |
| マネージドクラウド | Google Vertex AI、AWS SageMaker、Azure ML |
| モバイル (Android / iOS) | TFLite。INT8 量子化で軽量化 |
| ブラウザ | TF.js。WebGL / WebGPU で推論 |
| マイコン / エッジ | TFLite Micro。Cortex-M クラスでも動く |
| 他フレームワーク連携 | ONNX 経由で PyTorch / 推論エンジンへ |
| パイプライン | TFX で前処理・学習・検証・デプロイを自動化 |
TensorFlow vs PyTorch(ざっくり選び方)
| シーン |
適した選択 |
| 論文実装の追従・新規研究プロト | PyTorch(圧倒的多数) |
| 既存 TF 資産の保守 | TensorFlow(無理に乗り換えない) |
| モバイル/エッジ展開 | TFLite が成熟(一部 PyTorch Mobile 等の選択肢も) |
| ブラウザ推論 | TF.js |
| Google Cloud / TPU 活用 | TensorFlow / JAX |
| 大規模本番 ML パイプライン | TFX 系(または Kubeflow / MLflow + PyTorch) |
緑行は近年もっとも選ばれる組合せ。
インストール
|
# CPU 版
pip install tensorflow
# NVIDIA GPU 対応版 (TF 2.10 以降の Linux/WSL は "[and-cuda]" extras を利用)
pip install tensorflow[and-cuda]
# Mac (Apple Silicon)
pip install tensorflow tensorflow-metal
# 動作確認
python -c "import tensorflow as tf; print(tf.__version__, tf.config.list_physical_devices('GPU'))"
|
Windows ネイティブ GPU 対応は TF 2.10 までで打ち切られており、現行は WSL2 経由が公式推奨です。詳細は子ページ インストール (Windows + Python) / インストール (Ubuntu + Python) を参照。
運用上のヒント
| Tips |
- SavedModel 形式で保存。
HDF5 ではなく model.save("dir/") でフォルダ保存が現行推奨
- 混合精度 (
tf.keras.mixed_precision) で学習を高速化
- tf.data パイプラインで I/O 並列化+プリフェッチ
- TensorBoard で loss / accuracy / ヒストグラム / 埋め込みを可視化
- 分散は
tf.distribute.MirroredStrategy (シングルノード複数 GPU) から始める
- TPU は
TPUStrategy + tf.distribute で利用
|
注意点
| よくある落とし穴 |
- TF 1.x と 2.x で API が大きく違う — 古い記事のサンプルは
tf.compat.v1 経由になるか動かない
- CUDA / cuDNN / TF のバージョン整合が崩れると起動時にエラー
- Windows ネイティブ GPU は TF 2.10 までで打ち切り。以降は WSL2 推奨
- Keras 単体パッケージ (Keras 3) はマルチバックエンド対応に。
tf.keras と混同しないよう注意
- 本番化は SavedModel + TF Serving 経由が安全。生の Python プロセスで API 化は性能・運用に難あり
- 古い
session.run スタイルのコードは TF 2 で動かない
|
関連