2.

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 上に推論
豊富な公式モデル zooTF 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
OSLinux / macOS / Windows / Android / iOS
Python3.9〜3.12 (TF 版数で対応範囲が異なる)
GPUNVIDIA CUDA 対応 (CUDA / cuDNN のバージョン整合が必須)
TPUGoogle 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 で動かない

関連

編集
Post Share
子ページ
  1. インストール(Windows + Python)
  2. インストール(Ubuntu + Python)
  3. チュートリアル
同階層のページ
  1. PyTorch
  2. TensorFlow(テンソルフロー)
  3. scikit-learn
  4. Hugging Face Transformers
  5. LangChain
  6. LlamaIndex
  7. JAX
  8. ONNX Runtime