TensorFlowは、Googleが開発したオープンソースの機械学習フレームワークです。深層学習モデルの構築・学習・推論を一つの仕組みで扱え、画像認識から自然言語処理まで幅広く使われています。実際に手を動かすときはPythonから呼び出すのが標準で、つまずく箇所の多くは「Pythonの版が合っていない」「GPU版の入れ方が古い」「Windowsでの扱いを知らない」という3点です。本記事では、名前の由来や読み方といった基礎から、対応するPythonの版の確かめ方、venvとpipによるインストール、GPU設定、手書き数字を分類する通しのコード、Keras 3の切り替え、PyTorchとの比較、そして「これから新規採用すべきか」という実務判断までを、2026年10月時点の公式情報に沿って整理します。
まとめ:TensorFlowをPythonで動かす要点と2026年10月時点の版
TensorFlowは「テンソル(多次元配列)」を「フロー(計算グラフ)」で流す設計に由来する深層学習フレームワークで、2026年10月時点の最新安定版は2.21系(2.21.0は2026年3月6日公開)です。次の2.22系は2026年9月にリリース候補(2.22.0rc0)が出た段階にあります。
Pythonから使う前提は、Python 3.10〜3.13のいずれかを用意することです。2.21でPython 3.9のサポートが外れたため、古い環境のままではpip installが対応版を見つけられません。基本インストールは仮想環境を作ってからpip install tensorflowの1行で済み、GPUを使う場合はpip install tensorflow[and-cuda]を使います。かつてのtensorflow-gpuは2022年末に廃止されており、今これを指定するとエラーになる点が最大の落とし穴でしょう。WindowsでGPUを使うならWSL2上に入れる、というのも2.11以降の決まりごとです。
モデル作成は標準APIのKeras 3で書け、Keras 3はTensorFlow・JAX・PyTorchを切り替えられるマルチバックエンドになりました。研究領域ではPyTorchが優勢ですが、LiteRT(旧TensorFlow Lite)やTensorFlow Servingを含む本番デプロイの選択肢の広さは依然として強みです。以下で、用途・対応版・インストール・コード・比較・採用判断の順に具体的に見ていきます。
TensorFlowとは何か:名前の由来・読み方・開発元と現行バージョン
TensorFlowは2015年にGoogle Brainチームが公開し、現在はApache 2.0ライセンスのオープンソースとして開発されています。名前は、データの実体である「テンソル(Tensor=多次元配列)」が、演算をノードとする「データフローグラフ(Flow)」の上を流れる、という内部構造をそのまま表したものです。Pythonから見ると、テンソルはNumPyの配列とほぼ同じ感覚で扱え、相互に変換もできます。配列操作の基礎が不安な場合は、先にNumPyの読み方とインストール・使い方の解説で土台を固めておくと、TensorFlowのコードがぐっと読みやすくなります。
TensorFlowの読み方「テンサーフロー」とコード上の略記
日本語では「テンサーフロー」と読みます。「テンソルフロー」と表記されることもありますが、英語発音に近いのは「テンサーフロー」です。略記のtfは、Pythonコードでimport tensorflow as tfと書く慣習に由来します。
2026年10月時点の最新版2.21系と導入時に確認する互換性の変更
2026年10月時点の最新安定版はTensorFlow 2.21.0(2026年3月6日リリース)です。GitHubの2.21.0リリースノートでは、互換性に影響する変更としてPython 3.9サポートの削除と、TensorBoardへの依存の削除が明記されています。後者は見落としやすく、2.20以前の感覚でtensorboardコマンドを打つと見つからない、という事態が起こります。可視化を使う場合はpip install tensorboardを別途実行してください。
歴史を振り返ると、2019年公開のTensorFlow 2.0で、定義実行が必要だった1.x系の計算グラフから、Pythonの記述がそのまま動くEager Executionが既定になりました。現在採用を検討するなら2.x系が前提で、1.x系の情報(Sessionやplaceholderを使う書き方)はすでに過去のものと考えて差し支えありません。
TensorFlowでできること:画像・言語・音声と学習後のデプロイ先
TensorFlowの中心的な用途は、ニューラルネットワークの構築と学習です。具体的には次の領域で使われています。
- 画像認識:物体検出・画像分類・顔認識。畳み込みニューラルネットワーク(CNN)を組んで画像の特徴を抽出する
- 自然言語処理:テキスト分類・感情分析・機械翻訳。Transformer系モデルの学習基盤として使う
- 音声認識:音声波形をテキストへ変換するモデルの学習
- レコメンドや異常検知:表形式データに対する予測モデル
学習したモデルは、スマートフォン・組み込み機器向けのTensorFlow Lite(LiteRT)の位置づけとモデル変換、サーバー推論向けのTensorFlow Serving、ブラウザ実行向けのTensorFlow.jsの導入とブラウザ/Node.js実行の違いへ展開できます。端末側の推論基盤は現在Google AI EdgeのLiteRTとして案内されており、名称が変わっても「学習はPythonのTensorFlow、推論は端末」という分担は同じです。学習した環境とは別の場所で動かすところまでを一連の純正ツールで完結できる点が、TensorFlowが本番運用で選ばれてきた理由といえます。
なお、モデルを作って終わりではなく、再学習・監視・配布までを継続的に回す段階に入ると、課題はフレームワークの選択から運用設計へ移ります。その全体像はMLOpsの仕組みと導入判断の解説で整理しています。
対応するPythonの版を確かめる:TensorFlow 2.21は3.10〜3.13
「tensorflow python」で調べる人が最初にぶつかるのが、Pythonの版とTensorFlowの版の組み合わせです。公式のソースビルド手順にある検証済み構成表では、2.21.0がPython 3.10〜3.13、2.20.0が3.9〜3.13とされています。新しすぎるPythonも古すぎるPythonも対応外で、たとえばPython 3.14の環境でpip install tensorflowを実行すると、該当するwheelが無いため「No matching distribution found」で止まります。
| TensorFlow | 対応Python | 検証済みCUDA | 検証済みcuDNN |
|---|---|---|---|
| 2.21.0 | 3.10〜3.13 | 12.5 | 9.3 |
| 2.20.0 | 3.9〜3.13 | 12.5 | 9.3 |
OSごとの扱いも押さえておきます。公式のpipインストール手順によると、GPUを使えるのはUbuntuなどのLinuxとWindowsのWSL2で、macOSは公式のGPU対応がありません。Windowsのネイティブ環境でGPUを使えたのは2.10が最後で、2.11以降はCPU版のみの提供です。macOSのIntel(x86)機向けのビルドは2.16が最後で、現行版はApple Silicon(Arm64)のCPU版として提供されています。
手元のPythonを確かめるには、次の2行を実行します。表示された版が3.10〜3.13の範囲外なら、先にPythonを入れ直すか、対応版のPythonで仮想環境を作ります。
python --version
python -m pip --version
TensorFlowのインストール手順:venv作成からpipとGPU版の導入まで
インストールはPythonのpipで行います。公式はcondaではなくpipを推奨しており、理由として「TensorFlowの正式な配布先はPyPIのみで、condaには最新安定版が無い場合がある」と説明しています。ここはCPU版とGPU版で手順が分かれ、特にGPU版は古い情報が多いため注意が必要です。
ライブラリの版の衝突を避けるプロジェクト別の仮想環境作成(venv)
システムのPythonへ直接入れると、他のライブラリと版が衝突したときに戻すのが大変です。プロジェクトごとに仮想環境を作るのが安全で、Python標準のvenvで足ります。venvとコンテナ・仮想マシンの隔離の違いは仮想環境とは?venv・コンテナ・仮想マシンの違いで詳しく比べています。
# Linux・macOS・WSL2
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
# Windows(PowerShell)
py -3.12 -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pipそのものを先に更新しておくのは、公式手順でも求められている作業です。古いpipだと新しいwheelの形式を読めず、対応版があるのにインストールに失敗することがあります。
GPUを使わないCPU版の導入:pipの1行とインストール後の動作確認
GPUを使わない場合は次の1行です。
pip install tensorflow
インストール後は、バージョンが表示されれば成功です。公式手順と同じく、乱数行列の合計を計算させて動作を確かめる方法もあります。
python -c "import tensorflow as tf; print(tf.__version__)"
python -c "import tensorflow as tf; print(tf.reduce_sum(tf.random.normal([1000, 1000])))"
GPU版tensorflow[and-cuda]と廃止済みtensorflow-gpu
GPUで学習を高速化する場合、現在の正しい指定は次のとおりです。CUDA・cuDNNの対応版のライブラリがpip経由でまとめて入るため、NVIDIAドライバ以外を個別に入れる必要はありません。
pip install "tensorflow[and-cuda]"
シェルによっては角括弧が特別な意味を持つため、上のように引用符で囲むと安全です。古い記事にあるpip install tensorflow-gpuは使えません。tensorflow-gpuパッケージは2022年末に中身のない空パッケージへ置き換えられ、インストール時にエラーを返すようになりました。そもそもTensorFlow 2.1(2019年9月)以降はtensorflow本体がGPU対応を含んでおり、両者は同一です。2.21.0の検証済み構成はCUDA 12.5・cuDNN 9.3で、公式手順はLinuxのNVIDIAドライバとして525.60.13以上を求めています。システム側にCUDA 13系を入れていても、TensorFlowはpipで取り込んだCUDA 12系のライブラリを使うため、ドライバが新しければ動きます(CUDA自体の仕組みと版の流れはCUDAの読み方と仕組み・バージョン13の解説を参照)。
WindowsでGPU学習を行うためのWSL2への導入と実行条件
Windowsのネイティブ環境では、2.11以降GPUが使えません。GPUで学習したい場合は、Windows 10 19044(21H2)以降でWSL2を有効にし、Ubuntuなどのディストリビューションの中で上のLinux手順をそのまま実行します。Windows側にNVIDIAドライバを入れておけば、WSL2の中からGPUが見える仕組みです。WSL2そのものの導入と仕組みはWSL2とは|WSL1との違い・仕組み・インストール方法で手順を追えます。どうしてもネイティブWindowsでGPUを使う必要がある既存案件だけは、pip install "tensorflow<2.11"で2.10に固定する方法が公式に残っていますが、新規に選ぶ構成ではありません。
GPUの認識状況をデバイス一覧で確認する手順と空のリストが返る原因
GPUが正しく使われているかは、認識されているデバイスの一覧で確認します。手順の詳細は公式のGPU利用ガイドにまとまっています。
python -c "import tensorflow as tf; print(tf.config.list_physical_devices('GPU'))"
空のリスト[]が返る場合は、GPUドライバのバージョン不一致か、[and-cuda]を付けずに入れてしまったか、ネイティブWindowsで実行しているのが典型的な原因です。GPUを積んだ専用環境を手早く用意したい場合は、DGX Sparkのスペックと実測性能で紹介しているような卓上のGPU統合機を使う選択肢もあります。
公式サイトのチュートリアルやガイドの一部は日本語に翻訳されています。ただし最新APIの詳細やインストール要件は英語版が先行・正確なため、バージョン依存の挙動を調べるときは英語の公式リファレンスを基準にするのが確実です。実際、pip手順のページにはPython 3.9〜3.12という古い記載が残っており、2.21の対応範囲は前出の構成表のほうが新しい状態でした。
PythonでTensorFlowを試す:MNISTの手書き数字を分類する全コード
インストールが済んだら、実際に学習を回してみます。題材は、0〜9の手書き数字画像を分類するMNISTです。データセットはKerasが自動でダウンロードするため、追加の準備は要りません。以下は公式のTensorFlow 2 quickstartと同じAPIだけで組んだ通しのコードで、mnist_quickstart.pyとして保存しpython mnist_quickstart.pyで実行できます。対話的に試したい場合は、Jupyter Notebookのインストール手順で環境を作り、セルに分けて貼り付けても動きます。
import tensorflow as tf
from tensorflow import keras
print("TensorFlow:", tf.__version__)
print("GPU:", tf.config.list_physical_devices("GPU"))
# 1. データ読み込み(初回のみ自動ダウンロード)
(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0 # 0〜1に正規化
# 2. モデル定義
model = keras.Sequential([
keras.Input(shape=(28, 28)),
keras.layers.Flatten(),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dropout(0.2),
keras.layers.Dense(10, activation="softmax"),
])
# 3. 学習の設定と実行
model.compile(
optimizer="adam",
loss="sparse_categorical_crossentropy",
metrics=["accuracy"],
)
model.fit(x_train, y_train, epochs=5, validation_split=0.1)
# 4. 評価
loss, acc = model.evaluate(x_test, y_test, verbose=2)
print(f"test accuracy: {acc:.4f}")
# 5. 保存と読み込み(Keras 3の標準形式は .keras)
model.save("mnist_model.keras")
restored = keras.models.load_model("mnist_model.keras")
print(restored.predict(x_test[:3]).argmax(axis=1), y_test[:3])
データ準備→モデル定義→学習→評価→保存、という流れは画像でもテキストでも共通です。上の例は全結合層だけの最小構成で、テスト精度はおおむね97〜98%台に収まります。公式quickstartも同水準の結果を示しています。
MNISTコードの各段落の役割:データの正規化・モデル定義・学習設定
1のload_data()は、6万枚の学習用と1万枚のテスト用の画像を、NumPy配列として返します。画素値は0〜255の整数なので、学習を安定させるための処理が、255で割って0〜1に揃える正規化です。2のSequentialは層を上から順に積むだけの書き方で、Flattenが28×28の画像を784個の数値の並びに変換し、最後のDense(10)が10クラスの確率を出します。Dropout(0.2)は学習中に一部の出力をランダムに捨て、学習データへの過剰な適合を抑える層です。
3のcompileで、誤差の測り方(損失関数)と重みの更新方法(オプティマイザ)を決めます。ラベルが0〜9の整数のままなので、使う損失関数はsparse_categorical_crossentropyです。one-hot形式に変換したラベルならcategorical_crossentropyに替えます。validation_split=0.1は学習データの1割を検証に回す指定で、エポックごとに検証精度が表示されるため、過学習の兆候を早めに掴めます。
Keras 3の標準保存形式.kerasとServing向け出力の使い分け
5の保存は、Keras 3で標準になった.keras形式です。古い記事で見かける拡張子なしのSavedModelディレクトリや.h5形式は、Keras 3のmodel.save()では既定になりません。TensorFlow Servingへ載せる場合はmodel.export("export_dir")でSavedModelを書き出す、と使い分けます。保存形式を最初に揃えておくと、後でLiteRTやServingへ移すときの手戻りが減ります。
Keras 3とバックエンド切り替え:tf.kerasの既存コードの扱い方
2.x系では、標準の高水準APIであるKerasを使ってモデルを書きます。注目したいのは、このKerasが2023年末のKeras 3で大きく変わった点です。Keras公式のGetting startedによると、Keras 3はJAX・TensorFlow・PyTorchのいずれかをバックエンドに選べる構成で、TensorFlow 2.16以降はインストール時にKeras 3が既定で入ります。切り替えは環境変数KERAS_BACKENDか設定ファイル~/.keras/keras.jsonで行い、Kerasをimportする前に設定しておく必要があります。
import os
os.environ["KERAS_BACKEND"] = "tensorflow" # "jax" や "torch" も指定できる
import keras # 必ず環境変数の設定より後でimportする
print(keras.backend.backend())
同じモデルコードを、研究ではPyTorch、本番ではTensorFlowで動かす、といった使い分けが1つのコードで可能になりました。既存のtf.kerasコードはKeras 3でほぼそのまま動くよう設計されていますが、独自レイヤーやKeras 2固有の挙動に依存したコードは差分が出ることがあります。移行を急がない場合は、旧Kerasをtf_kerasパッケージとして入れ、環境変数TF_USE_LEGACY_KERAS=1で従来の挙動に戻す方法も選択可能です。Kerasそのものの成り立ちとKeras 3の詳細はKerasとは?特徴・TensorFlowとの関係とKeras 3の最新事情で補えます。
TensorFlow・PyTorch・Keras・Caffeの用途と特徴の比較
TensorFlowを検討するときは、競合との立ち位置を押さえると判断しやすくなります。代表的な4つを整理します。
| フレームワーク | 開発元 | 特徴 | 主な用途 |
|---|---|---|---|
| TensorFlow | 本番デプロイ系が充実 | 研究〜本番運用 | |
| PyTorch | Meta | 記述が直感的・研究で多数派 | 研究・論文実装 |
| Keras 3 | Google主導 | 3バックエンド共通API | 高水準なモデル記述 |
| Caffe | BVLC | 旧世代・新規採用は少数 | 画像系の既存資産 |
機能の優劣ではなく、エコシステムの慣れと用途で選ぶのが実情です。Pythonから使う感覚で比べると、PyTorchはNumPyに近い書き味で1行ずつ挙動を確かめやすく、TensorFlowはKerasのfitに任せて定型の学習を短く書けるのが持ち味になります。PyTorchとの違いをより詳しく見たい場合はPyTorchとは?特徴・できること・TensorFlowとの違い、研究で広く使われるPyTorch側の高水準ラッパーはPyTorch Lightningのインストール方法と最新版、旧世代フレームワークの位置づけはCaffeの現在地と移行先が参考になります。
つまずきやすいエラーと対処:版の不一致・GPU未認識・import失敗
PythonでTensorFlowを動かすときに出やすいエラーを、症状・原因・対処の順にまとめます。多くはインストールの段階で決まるため、コードを疑う前に環境を確かめるのが近道です。
| 症状 | 主な原因 | 対処 |
|---|---|---|
| 対応する配布パッケージなし | Pythonが対応範囲外 | 3.10〜3.13で環境を作り直す |
| tensorflow-gpuで失敗 | 廃止済みパッケージ | tensorflow[and-cuda]に替える |
| GPU一覧が空のリスト | ドライバ不一致・CPU版 | ドライバ更新と再インストール |
| WindowsでGPUが出ない | 2.11以降は非対応 | WSL2の中で実行する |
| tensorboardが見つからない | 2.21で依存から削除 | tensorboardを別途入れる |
このほか、import tensorflowの直後に大量の警告ログが出ることがありますが、多くはCPU命令セットやGPUライブラリの探索に関する情報で、エラーではありません。表示を抑えたい場合は、import前に環境変数TF_CPP_MIN_LOG_LEVELを"2"に設定します。また、同じ仮想環境にPyTorchやJAXを混ぜると、それぞれが要求するCUDA系ライブラリの版がぶつかり、片方のGPU認識が外れる場合があります。この種の衝突を避ける方法は、フレームワークごとに仮想環境を分けておくことです。
学習が遅いと感じたときは、CPU版を入れている、GPUが認識されていない、バッチサイズが小さくGPUを使い切れていない、入力データの前処理が詰まっている、のいずれかを順に確かめます。前処理が原因なら、tf.dataのパイプラインで.batch()と.prefetch(tf.data.AUTOTUNE)を組み合わせ、GPUの計算中に次のバッチを準備させると改善します。
2026年にTensorFlowを新規採用すべきか:選ぶ場面と見送る場面
結論から言うと、これから個人で深層学習を学ぶ・研究寄りのプロジェクトを始めるなら、第一候補はPyTorchです。2020年代に入って論文実装やライブラリの初期対応はPyTorch先行が定着し、学習リソースもPyTorch前提のものが増えました。TensorFlowで新規に始めると、参考にしたい最新実装がPyTorchで書かれていて移植が必要になる場面が増えています。
一方で、TensorFlowを選ぶべき場面もはっきりしています。スマートフォンや組み込み機器へモデルを載せる(LiteRT)、安定したサーバー推論基盤を組む(TensorFlow Serving)、ブラウザで推論を完結させる(TensorFlow.js)といった「学習よりデプロイ先が要件を決める」プロジェクトでは、純正ツールが揃うTensorFlowが有利です。既存のTensorFlow資産を運用しているチームが、PyTorchへ全面移行する理由も通常はありません。Keras 3で書いておけば、将来バックエンドを替える余地も残せます。
採用を判断するときの条件を言い切ると、次のとおりです。デプロイ先が端末・ブラウザ・既存のServing基盤のいずれかに決まっているなら、TensorFlowを採用してよいでしょう。逆に、最新論文の実装を素早く試すことが主目的で、デプロイ先がまだ決まっていない段階なら、PyTorchで始めてKeras 3やONNXでの移植余地を残すほうが手戻りは少なくなります。
避けたほうがよいのは、ネット上の古い入門記事だけを頼りに1.x系の書き方やtensorflow-gpuで始めてしまうケースです。動かないコマンドや非推奨APIで最初の環境構築に時間を溶かすことになります。始めるなら2.x系・Python 3.10〜3.13・Keras 3・tensorflow[and-cuda]を前提に、公式ドキュメントの現行版を一次情報として確認するのが結局いちばん早道です。
業務データで予測・分類・異常検知のモデルを作りたいものの、フレームワーク選定や学習環境の構築、本番への組み込みまで社内で抱えきれない場合は、要件整理から相談できる一創の機械学習モデル開発も選択肢に入れてみてください。
よくある質問
TensorFlowの読み方は?
「テンサーフロー」と読みます。テンソル(多次元配列)とフロー(計算グラフ)を組み合わせた造語です。コード上はtfと略記されます。
TensorFlowに対応するPythonのバージョンは?
2026年10月時点の最新安定版である2.21系は、Python 3.10〜3.13に対応しています。Python 3.9は2.21でサポートが外れ、3.14向けのwheelはまだありません。範囲外のPythonではpip install tensorflowが対応版を見つけられないため、対応する版で仮想環境を作ってから入れてください。
tensorflow-gpuがインストールできないのはなぜ?
tensorflow-gpuは2022年末に廃止され、中身のない空パッケージになったためです。GPU版はpip install "tensorflow[and-cuda]"を使います。TensorFlow 2.1以降は本体がGPU対応を含むので、別パッケージは不要です。Windowsのネイティブ環境では2.11以降GPUが使えないため、WSL2の中で実行します。
GPUを使っているのに学習が遅いのはなぜ?
CPU版を入れている、GPUが認識されていない(デバイス一覧が空)、バッチサイズが小さくGPUを使い切れていない、入力データの前処理がボトルネックになっている、のいずれかが多い原因です。まずデバイス一覧を確認し、次にバッチサイズとtf.dataのパイプラインを見直します。
TensorFlow 1系と2系の違いは?
最大の違いは実行方式です。1系は計算グラフを先に定義してSessionで実行しましたが、2系はPythonの記述がそのまま動くEager Executionが既定で、Kerasが標準APIになりました。新規開発は2系が前提です。
関連記事
- PyTorchとは?特徴・できること・TensorFlowとの違いを解説
- Kerasとは?特徴・TensorFlowとの関係とKeras 3の最新事情
- TensorFlow Lite(LiteRT)とは?改称後の位置づけ・モデル変換・NPU実行を実装目線で解説
- TensorFlow.jsとは?導入・使い方とブラウザ/Node.js実行の違い【v4.22】
- PyTorch Lightningインストール方法|pip installの違いと最新版
- CUDAとは?読み方と仕組み・バージョン13・始め方【2026年最新】
- 仮想環境とは?venv・コンテナ・仮想マシンの違いと隔離レベルの選び方を実装者向けに解説