🤖

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
開発元 Google Meta(旧Facebook)
実行方式 静的グラフ + eager 動的グラフ(直感的)
主なUI tf.keras torch.nn
本番運用向け 非常に強い 最近強化されつつある

まとめ

TensorFlowは、学習から本番運用まで一貫して対応可能な強力なフレームワークです。初心者から企業のプロダクト開発まで幅広く使われており、特に大規模なMLシステム構築に適しています。


Discussion