Agent Skills by ALSEL
Anthropic ClaudeLLM・AI開発⭐ リポ 0品質スコア 50/100

tensorboard

TensorBoardを使用してトレーニングメトリクスの可視化、ヒストグラムによるモデルのデバッグ、実験の比較、モデルグラフの可視化、パフォーマンスプロファイリングを行います。GoogleのML可視化ツールキットを活用し、機械学習の開発・分析を効率化します。

description の原文を見る

Visualize training metrics, debug models with histograms, compare experiments, visualize model graphs, and profile performance with TensorBoard - Google's ML visualization toolkit

SKILL.md 本文

TensorBoard: ML向け可視化ツールキット

このスキルを使用する場合

TensorBoardが必要な場合:

  • 訓練メトリクスの可視化 (損失と精度の時系列推移など)
  • モデルのデバッグ ヒストグラムと分布を使用
  • 複数回の実験を比較
  • モデルグラフとアーキテクチャの可視化
  • 埋め込みの次元削減投影 (t-SNE、PCA)
  • ハイパーパラメータ実験の追跡
  • パフォーマンスのプロファイリング とボトルネック特定
  • 訓練中の画像とテキストの可視化

ユーザー: 20M+ downloads/year | GitHub Stars: 27k+ | ライセンス: Apache 2.0

インストール

# TensorBoardのインストール
pip install tensorboard

# PyTorch統合
pip install torch torchvision tensorboard

# TensorFlow統合 (TensorBoard含む)
pip install tensorflow

# TensorBoardの起動
tensorboard --logdir=runs
# アクセス: http://localhost:6006

クイックスタート

PyTorch

from torch.utils.tensorboard import SummaryWriter

# ライターを作成
writer = SummaryWriter('runs/experiment_1')

# 訓練ループ
for epoch in range(10):
    train_loss = train_epoch()
    val_acc = validate()

    # メトリクスをログ
    writer.add_scalar('Loss/train', train_loss, epoch)
    writer.add_scalar('Accuracy/val', val_acc, epoch)

# ライターを閉じる
writer.close()

# 起動: tensorboard --logdir=runs

TensorFlow/Keras

import tensorflow as tf

# コールバックを作成
tensorboard_callback = tf.keras.callbacks.TensorBoard(
    log_dir='logs/fit',
    histogram_freq=1
)

# モデルを訓練
model.fit(
    x_train, y_train,
    epochs=10,
    validation_data=(x_val, y_val),
    callbacks=[tensorboard_callback]
)

# 起動: tensorboard --logdir=logs

コア概念

1. SummaryWriter (PyTorch)

from torch.utils.tensorboard import SummaryWriter

# デフォルトディレクトリ: runs/CURRENT_DATETIME
writer = SummaryWriter()

# カスタムディレクトリ
writer = SummaryWriter('runs/experiment_1')

# カスタムコメント (デフォルトディレクトリに追加)
writer = SummaryWriter(comment='baseline')

# データをログ
writer.add_scalar('Loss/train', 0.5, step=0)
writer.add_scalar('Loss/train', 0.3, step=1)

# フラッシュと閉じる
writer.flush()
writer.close()

2. スカラー値のロギング

# PyTorch
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter()

for epoch in range(100):
    train_loss = train()
    val_loss = validate()

    # 個別のメトリクスをログ
    writer.add_scalar('Loss/train', train_loss, epoch)
    writer.add_scalar('Loss/val', val_loss, epoch)
    writer.add_scalar('Accuracy/train', train_acc, epoch)
    writer.add_scalar('Accuracy/val', val_acc, epoch)

    # 学習率
    lr = optimizer.param_groups[0]['lr']
    writer.add_scalar('Learning_rate', lr, epoch)

writer.close()
# TensorFlow
import tensorflow as tf

train_summary_writer = tf.summary.create_file_writer('logs/train')
val_summary_writer = tf.summary.create_file_writer('logs/val')

for epoch in range(100):
    with train_summary_writer.as_default():
        tf.summary.scalar('loss', train_loss, step=epoch)
        tf.summary.scalar('accuracy', train_acc, step=epoch)

    with val_summary_writer.as_default():
        tf.summary.scalar('loss', val_loss, step=epoch)
        tf.summary.scalar('accuracy', val_acc, step=epoch)

3. 複数のスカラー値をロギング

# PyTorch: 関連メトリクスをグループ化
writer.add_scalars('Loss', {
    'train': train_loss,
    'validation': val_loss,
    'test': test_loss
}, epoch)

writer.add_scalars('Metrics', {
    'accuracy': accuracy,
    'precision': precision,
    'recall': recall,
    'f1': f1_score
}, epoch)

4. 画像のロギング

# PyTorch
import torch
from torchvision.utils import make_grid

# 単一画像
writer.add_image('Input/sample', img_tensor, epoch)

# 複数画像をグリッド表示
img_grid = make_grid(images[:64], nrow=8)
writer.add_image('Batch/inputs', img_grid, epoch)

# 予測結果の可視化
pred_grid = make_grid(predictions[:16], nrow=4)
writer.add_image('Predictions', pred_grid, epoch)
# TensorFlow
import tensorflow as tf

with file_writer.as_default():
    # 画像をPNGで符号化
    tf.summary.image('Training samples', images, step=epoch, max_outputs=25)

5. ヒストグラムのロギング

# PyTorch: 重み分布を追跡
for name, param in model.named_parameters():
    writer.add_histogram(name, param, epoch)

    # 勾配を追跡
    if param.grad is not None:
        writer.add_histogram(f'{name}.grad', param.grad, epoch)

# アクティベーションを追跡
writer.add_histogram('Activations/relu1', activations, epoch)
# TensorFlow
with file_writer.as_default():
    tf.summary.histogram('weights/layer1', layer1.kernel, step=epoch)
    tf.summary.histogram('activations/relu1', activations, step=epoch)

6. モデルグラフのロギング

# PyTorch
import torch

model = MyModel()
dummy_input = torch.randn(1, 3, 224, 224)

writer.add_graph(model, dummy_input)
writer.close()
# TensorFlow (Kerasで自動)
tensorboard_callback = tf.keras.callbacks.TensorBoard(
    log_dir='logs',
    write_graph=True
)

model.fit(x, y, callbacks=[tensorboard_callback])

高度な機能

埋め込みプロジェクター

高次元データ (埋め込み、特徴) を2D/3Dで可視化。

import torch
from torch.utils.tensorboard import SummaryWriter

# 埋め込みを取得 (単語埋め込み、画像特徴など)
embeddings = model.get_embeddings(data)  # Shape: (N, embedding_dim)

# メタデータ (各点のラベル)
metadata = ['class_1', 'class_2', 'class_1', ...]

# 画像 (オプション、画像埋め込み用)
label_images = torch.stack([img1, img2, img3, ...])

# TensorBoardにログ
writer.add_embedding(
    embeddings,
    metadata=metadata,
    label_img=label_images,
    global_step=epoch
)

TensorBoardで:

  • 「Projector」タブに移動
  • PCA、t-SNE、またはUMAP可視化を選択
  • クラスター検索、フィルタリング、探索

ハイパーパラメータチューニング

from torch.utils.tensorboard import SummaryWriter

# 異なるハイパーパラメータを試行
for lr in [0.001, 0.01, 0.1]:
    for batch_size in [16, 32, 64]:
        # ユニークな実行ディレクトリを作成
        writer = SummaryWriter(f'runs/lr{lr}_bs{batch_size}')

        # ハイパーパラメータをログ
        writer.add_hparams(
            {'lr': lr, 'batch_size': batch_size},
            {'hparam/accuracy': final_acc, 'hparam/loss': final_loss}
        )

        # 訓練とログ
        for epoch in range(10):
            loss = train(lr, batch_size)
            writer.add_scalar('Loss/train', loss, epoch)

        writer.close()

# TensorBoardの「HParams」タブで比較

テキストロギング

# PyTorch: テキストをログ (モデル予測、サマリーなど)
writer.add_text('Predictions', f'Epoch {epoch}: {predictions}', epoch)
writer.add_text('Config', str(config), 0)

# マークダウンテーブルをログ
markdown_table = """
| Metric | Value |
|--------|-------|
| Accuracy | 0.95 |
| F1 Score | 0.93 |
"""
writer.add_text('Results', markdown_table, epoch)

PR曲線

分類のための適合率-再現率曲線。

from torch.utils.tensorboard import SummaryWriter

# 予測とラベルを取得
predictions = model(test_data)  # Shape: (N, num_classes)
labels = test_labels  # Shape: (N,)

# 各クラスのPR曲線をログ
for i in range(num_classes):
    writer.add_pr_curve(
        f'PR_curve/class_{i}',
        labels == i,
        predictions[:, i],
        global_step=epoch
    )

統合例

PyTorch訓練ループ

import torch
import torch.nn as nn
from torch.utils.tensorboard import SummaryWriter

# セットアップ
writer = SummaryWriter('runs/resnet_experiment')
model = ResNet50()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)
criterion = nn.CrossEntropyLoss()

# モデルグラフをログ
dummy_input = torch.randn(1, 3, 224, 224)
writer.add_graph(model, dummy_input)

# 訓練ループ
for epoch in range(50):
    model.train()
    train_loss = 0.0
    train_correct = 0

    for batch_idx, (data, target) in enumerate(train_loader):
        optimizer.zero_grad()
        output = model(data)
        loss = criterion(output, target)
        loss.backward()
        optimizer.step()

        train_loss += loss.item()
        pred = output.argmax(dim=1)
        train_correct += pred.eq(target).sum().item()

        # バッチメトリクスをログ (100バッチごと)
        if batch_idx % 100 == 0:
            global_step = epoch * len(train_loader) + batch_idx
            writer.add_scalar('Loss/train_batch', loss.item(), global_step)

    # エポックメトリクス
    train_loss /= len(train_loader)
    train_acc = train_correct / len(train_loader.dataset)

    # 検証
    model.eval()
    val_loss = 0.0
    val_correct = 0

    with torch.no_grad():
        for data, target in val_loader:
            output = model(data)
            val_loss += criterion(output, target).item()
            pred = output.argmax(dim=1)
            val_correct += pred.eq(target).sum().item()

    val_loss /= len(val_loader)
    val_acc = val_correct / len(val_loader.dataset)

    # エポックメトリクスをログ
    writer.add_scalars('Loss', {'train': train_loss, 'val': val_loss}, epoch)
    writer.add_scalars('Accuracy', {'train': train_acc, 'val': val_acc}, epoch)

    # 学習率をログ
    writer.add_scalar('Learning_rate', optimizer.param_groups[0]['lr'], epoch)

    # ヒストグラムをログ (5エポックごと)
    if epoch % 5 == 0:
        for name, param in model.named_parameters():
            writer.add_histogram(name, param, epoch)

    # サンプル予測をログ
    if epoch % 10 == 0:
        sample_images = data[:8]
        writer.add_image('Sample_inputs', make_grid(sample_images), epoch)

writer.close()

TensorFlow/Keras訓練

import tensorflow as tf

# モデルを定義
model = tf.keras.models.Sequential([
    tf.keras.layers.Conv2D(32, 3, activation='relu', input_shape=(28, 28, 1)),
    tf.keras.layers.MaxPooling2D(),
    tf.keras.layers.Flatten(),
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dense(10, activation='softmax')
])

model.compile(
    optimizer='adam',
    loss='sparse_categorical_crossentropy',
    metrics=['accuracy']
)

# TensorBoardコールバック
tensorboard_callback = tf.keras.callbacks.TensorBoard(
    log_dir='logs/fit',
    histogram_freq=1,          # エポックごとにヒストグラムをログ
    write_graph=True,          # モデルグラフを可視化
    write_images=True,         # 重みを画像として可視化
    update_freq='epoch',       # エポックごとにメトリクスをログ
    profile_batch='500,520',   # バッチ500-520をプロファイル
    embeddings_freq=1          # エポックごとに埋め込みをログ
)

# 訓練
model.fit(
    x_train, y_train,
    epochs=10,
    validation_data=(x_val, y_val),
    callbacks=[tensorboard_callback]
)

実験の比較

複数実行

# 異なる設定で実験を実行
python train.py --lr 0.001 --logdir runs/exp1
python train.py --lr 0.01 --logdir runs/exp2
python train.py --lr 0.1 --logdir runs/exp3

# すべての実行を一緒に表示
tensorboard --logdir=runs

TensorBoardで:

  • すべての実行が同じダッシュボードに表示
  • 実行を切り替えてオン/オフ
  • 正規表現を使用して実行名をフィルタリング
  • チャートをオーバーレイしてメトリクスを比較

実験の構成

# 階層的な組織
runs/
├── baseline/
│   ├── run_1/
│   └── run_2/
├── improved/
│   ├── run_1/
│   └── run_2/
└── final/
    └── run_1/

# 階層を含めてログ
writer = SummaryWriter('runs/baseline/run_1')

ベストプラクティス

1. 説明的な実行名を使用

# ✅ 良い例: 説明的な名前
from datetime import datetime
timestamp = datetime.now().strftime('%Y%m%d_%H%M%S')
writer = SummaryWriter(f'runs/resnet50_lr0.001_bs32_{timestamp}')

# ❌ 悪い例: 自動生成される名前
writer = SummaryWriter()  # runs/Jan01_12-34-56_hostname を作成

2. 関連メトリクスをグループ化

# ✅ 良い例: グループ化されたメトリクス
writer.add_scalar('Loss/train', train_loss, step)
writer.add_scalar('Loss/val', val_loss, step)
writer.add_scalar('Accuracy/train', train_acc, step)
writer.add_scalar('Accuracy/val', val_acc, step)

# ❌ 悪い例: フラットな名前空間
writer.add_scalar('train_loss', train_loss, step)
writer.add_scalar('val_loss', val_loss, step)

3. 定期的にログするが頻繁すぎないようにする

# ✅ 良い例: エポックメトリクスは常にログ、バッチメトリクスは時々
for epoch in range(100):
    for batch_idx, (data, target) in enumerate(train_loader):
        loss = train_step(data, target)

        # 100バッチごとにログ
        if batch_idx % 100 == 0:
            writer.add_scalar('Loss/batch', loss, global_step)

    # 常にエポックメトリクスをログ
    writer.add_scalar('Loss/epoch', epoch_loss, epoch)

# ❌ 悪い例: すべてのバッチをログ (ログファイルが巨大になる)
for batch in train_loader:
    writer.add_scalar('Loss', loss, step)  # 頻度が高すぎる

4. 完了時にライターを閉じる

# ✅ 良い例: コンテキストマネージャーを使用
with SummaryWriter('runs/exp1') as writer:
    for epoch in range(10):
        writer.add_scalar('Loss', loss, epoch)
# 自動的に閉じる

# または手動で
writer = SummaryWriter('runs/exp1')
# ... ロギング ...
writer.close()

5. 訓練/検証用に別々のライターを使用

# ✅ 良い例: 別々のログディレクトリ
train_writer = SummaryWriter('runs/exp1/train')
val_writer = SummaryWriter('runs/exp1/val')

train_writer.add_scalar('loss', train_loss, epoch)
val_writer.add_scalar('loss', val_loss, epoch)

パフォーマンスプロファイリング

TensorFlowプロファイラー

# プロファイリングを有効化
tensorboard_callback = tf.keras.callbacks.TensorBoard(
    log_dir='logs',
    profile_batch='10,20'  # バッチ10-20をプロファイル
)

model.fit(x, y, callbacks=[tensorboard_callback])

# TensorBoard Profile タブで表示
# 表示内容: GPU利用率、カーネル統計、メモリ使用量、ボトルネック

PyTorchプロファイラー

import torch.profiler as profiler

with profiler.profile(
    activities=[
        profiler.ProfilerActivity.CPU,
        profiler.ProfilerActivity.CUDA
    ],
    on_trace_ready=torch.profiler.tensorboard_trace_handler('./runs/profiler'),
    record_shapes=True,
    with_stack=True
) as prof:
    for batch in train_loader:
        loss = train_step(batch)
        prof.step()

# TensorBoard Profile タブで表示

リソース

関連項目

  • references/visualization.md - 包括的な可視化ガイド
  • references/profiling.md - パフォーマンスプロファイリングパターン
  • references/integrations.md - フレームワーク固有の統合例

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
davila7
リポジトリ
davila7/claude-code-templates
ライセンス
MIT
最終更新
不明

Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT

関連スキル

OpenAILLM・AI開発⭐ リポ 6,054

agent-browser

AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。

by JimmyLv
汎用LLM・AI開発⭐ リポ 1,982

anyskill

AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 1,982

engram

AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。

by LeoYeAI
汎用LLM・AI開発⭐ リポ 21,584

skyvern

AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。

by Skyvern-AI
汎用LLM・AI開発⭐ リポ 1,149

pinchbench

PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。

by pinchbench
汎用LLM・AI開発⭐ リポ 4,693

openui

OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。

by thesysdev
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: davila7 · davila7/claude-code-templates · ライセンス: MIT