Skip to main content
tensorboard Visualize training metrics, debug models with histograms, compare experiments, visualize model graphs, and profile performance with TensorBoard - Google's ML visualization toolkit
Ir a la instalación Skills Marketplace Descubre y explora habilidades de IA creadas por la comunidad.
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Copiar promptMostrar detalles del prompt Un comando directo omite el prompt de revisión. Revisa el origen antes de ejecutarlo.
npx skills add https://github.com/davila7/claude-code-templates --skill tensorboardEl comando permanece en una sola línea. Desplázate horizontalmente para revisarlo antes de copiarlo.
¿Prefieres una copia local? Descarga los archivos que SkillsMP tiene disponibles ahora.
Descargar Zip Descargando... Explorador de archivos
4 archivos Más de este repositorio Build AI agents that interact with computers like humans do - viewing screens, moving cursors, clicking buttons, and typing text. Covers Anthropic's Computer Use, OpenAI's Operator/CUA, and open-source alternatives. Critical focus on sandboxing, security, and handling the unique challenges of vision-based control. Use when: computer use, desktop automation agent, screen control AI, vision-based agent, GUI automation.
Expert in building products that wrap AI APIs (OpenAI, Anthropic, etc.) into focused tools people will pay for. Not just 'ChatGPT but different' - products that solve specific problems with AI. Covers prompt engineering for products, cost management, rate limiting, and building defensible AI businesses. Use when: AI wrapper, GPT product, AI tool, wrap AI, AI SaaS.
github-workflow-automation Automate GitHub workflows with AI assistance. Includes PR reviews, issue triage, CI/CD integration, and Git operations. Use when automating GitHub workflows, setting up PR review automation, creating GitHub Actions, or triaging issues.
Ocupaciones relacionadas SOC
Basado en la clasificación ocupacional SOC
name tensorboard description Visualize training metrics, debug models with histograms, compare experiments, visualize model graphs, and profile performance with TensorBoard - Google's ML visualization toolkit version 1.0.0 author Orchestra Research license MIT tags ["MLOps","TensorBoard","Visualization","Training Metrics","Model Debugging","PyTorch","TensorFlow","Experiment Tracking","Performance Profiling"] dependencies ["tensorboard","torch","tensorflow"]
TensorBoard: Visualization Toolkit for ML
When to Use This Skill
Use TensorBoard when you need to:
Visualize training metrics like loss and accuracy over time
Debug models with histograms and distributions
Compare experiments across multiple runs
Visualize model graphs and architecture
Project embeddings to lower dimensions (t-SNE, PCA)
Track hyperparameter experiments
Profile performance and identify bottlenecks
Visualize images and text during trainingUsers : 20M+ downloads/year | GitHub Stars : 27k+ | License : Apache 2.0
Installation
pip install tensorboard
pip install torch torchvision tensorboard
pip install tensorflow
tensorboard --logdir=runs
Quick Start
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()
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]
)
Core Concepts
1. SummaryWriter (PyTorch) from torch.utils.tensorboard import SummaryWriter
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. Logging Scalars
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()
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. Logging Multiple Scalars
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. Logging Images
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)
import tensorflow as tf
with file_writer.as_default():
tf.summary.image('Training samples' , images, step=epoch, max_outputs=25 )
5. Logging Histograms
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)
with file_writer.as_default():
tf.summary.histogram('weights/layer1' , layer1.kernel, step=epoch)
tf.summary.histogram('activations/relu1' , activations, step=epoch)
6. Logging Model Graph
import torch
model = MyModel()
dummy_input = torch.randn(1 , 3 , 224 , 224 )
writer.add_graph(model, dummy_input)
writer.close()
tensorboard_callback = tf.keras.callbacks.TensorBoard(
log_dir='logs' ,
write_graph=True
)
model.fit(x, y, callbacks=[tensorboard_callback])
Advanced Features
Embedding Projector Visualize high-dimensional data (embeddings, features) in 2D/3D.
import torch
from torch.utils.tensorboard import SummaryWriter
embeddings = model.get_embeddings(data)
metadata = ['class_1' , 'class_2' , 'class_1' , ...]
label_images = torch.stack([img1, img2, img3, ...])
writer.add_embedding(
embeddings,
metadata=metadata,
label_img=label_images,
global_step=epoch
)
Navigate to "Projector" tab
Choose PCA, t-SNE, or UMAP visualization
Search, filter, and explore clusters
Hyperparameter Tuning 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()
Text Logging
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 Curves Precision-Recall curves for classification.
from torch.utils.tensorboard import SummaryWriter
predictions = model(test_data)
labels = test_labels
for i in range (num_classes):
writer.add_pr_curve(
f'PR_curve/class_{i} ' ,
labels == i,
predictions[:, i],
global_step=epoch
)
Integration Examples
PyTorch Training Loop 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()
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)
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 Training 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_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' ,
embeddings_freq=1
)
model.fit(
x_train, y_train,
epochs=10 ,
validation_data=(x_val, y_val),
callbacks=[tensorboard_callback]
)
Comparing Experiments
Multiple Runs
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
All runs appear in the same dashboard
Toggle runs on/off for comparison
Use regex to filter run names
Overlay charts to compare metrics
Organizing Experiments
runs/
├── baseline/
│ ├── run_1/
│ └── run_2/
├── improved/
│ ├── run_1/
│ └── run_2/
└── final/
└── run_1/
writer = SummaryWriter('runs/baseline/run_1' )
Best Practices
1. Use Descriptive Run Names
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()
2. Group Related Metrics
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. Log Regularly but Not Too Often
for epoch in range (100 ):
for batch_idx, (data, target) in enumerate (train_loader):
loss = train_step(data, target)
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. Close Writer When Done
with SummaryWriter('runs/exp1' ) as writer:
for epoch in range (10 ):
writer.add_scalar('Loss' , loss, epoch)
writer = SummaryWriter('runs/exp1' )
writer.close()
5. Use Separate Writers for Train/Val
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)
Performance Profiling
TensorFlow Profiler
tensorboard_callback = tf.keras.callbacks.TensorBoard(
log_dir='logs' ,
profile_batch='10,20'
)
model.fit(x, y, callbacks=[tensorboard_callback])
PyTorch Profiler 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()
Resources
See Also
references/visualization.md - Comprehensive visualization guide
references/profiling.md - Performance profiling patterns
references/integrations.md - Framework-specific integration examples