🤖
Tensorflowとは
TensorFlowとは?
Googleが開発した機械学習フレームワークの標準基盤
概要
TensorFlowは、Googleが開発・公開しているオープンソースの機械学習・深層学習フレームワークです。2015年にリリースされ、画像認識、自然言語処理、音声認識などの分野で幅広く使われています。
名前の由来は、「テンソル(多次元配列)」を流す(Flow)計算グラフの仕組みからきています。
主な特徴
特徴 | 説明 |
---|---|
マルチプラットフォーム | Linux, Windows, macOS, Android, iOS, Webで動作 |
GPU/TPU対応 | 高速なトレーニングが可能(CUDA, XLA) |
柔軟なモデル定義 | 低レベルの操作も高レベルAPIも両方利用可 |
Keras統合 | シンプルな構文でモデル作成が可能(tf.keras ) |
可視化ツール | TensorBoardによる学習状況・グラフ表示 |
ONNXとの互換性 | 他フレームワークとのモデル変換が可能 |
コード例(ニューラルネットによる分類)
# TensorFlowとKerasのレイヤーをインポート
import tensorflow as tf
from tensorflow.keras import layers
# 順にレイヤーを積む「シーケンシャルモデル」を定義
model = tf.keras.Sequential([
# 入力層(784次元 → 64ユニット) + 活性化関数ReLU
layers.Dense(64, activation='relu', input_shape=(784,)),
# 出力層(10クラス分類なのでユニット数10) + ソフトマックス関数で確率に変換
layers.Dense(10, activation='softmax')
])
# モデルのコンパイル(損失関数・最適化アルゴリズム・評価指標の指定)
model.compile(
optimizer='adam', # 勾配降下法を改良した最適化手法
loss='sparse_categorical_crossentropy', # ラベルが整数のときの分類用損失関数
metrics=['accuracy'] # 学習中に精度をモニタリング
)
# NumPyでダミーの学習データを作成(入力:1000件×784次元、ラベル:0〜9の整数)
import numpy as np
x = np.random.rand(1000, 784) # ランダムな画像データ(例:28×28ピクセルのflatten)
y = np.random.randint(0, 10, 1000) # 10クラスのランダムなラベル
# モデル学習を実行(5エポック、バッチサイズ32)
model.fit(x, y, epochs=5, batch_size=32)
このように、数行でニューラルネットを構築し、学習・推論まで可能です。
用途
- 画像分類・物体検出(例:CNN)
- 自然言語処理(例:Transformer, BERT)
- 時系列予測
- 音声認識
- 強化学習(TF-Agents)
TensorFlowの構成要素
-
TensorFlow Core
: 計算グラフやテンソル演算など低レベルAPI -
tf.keras
: 高レベルAPI(TensorFlow公式のKeras) -
TensorBoard
: ログ可視化ツール -
TF Lite
: モバイル・組込み向け -
TF Serving
: モデルのデプロイ用 -
TFX
: 本番MLパイプライン構築用
PyTorchとの比較(簡略)
項目 | TensorFlow | PyTorch |
---|---|---|
開発元 | Meta(旧Facebook) | |
実行方式 | 静的グラフ + eager | 動的グラフ(直感的) |
主なUI | tf.keras |
torch.nn |
本番運用向け | 非常に強い | 最近強化されつつある |
まとめ
TensorFlowは、学習から本番運用まで一貫して対応可能な強力なフレームワークです。初心者から企業のプロダクト開発まで幅広く使われており、特に大規模なMLシステム構築に適しています。
Discussion