服务好的微网站建设wordpress 网页混乱
Weight&Biases教程-持续更新
- 简介
 - 好处
 
- 网址
 - 测试demo
 - pytorch中使用
 - 登录
 - 建议
 - wandb.init()
 - 指定id和name
 - 离线使用
 
- winda.config
 - 基本使用
 - Argparse 配置
 - 基于yaml文件的配置
 - 基于字典配置
 
- wandb.log
 - 直方图
 - 图像
 - matplotlib
 - 递增式记录
 - 总结指标summary
 - 自建图表
 - pytorch 例子
 
- API guide
 - 导出文件
 
- 分组
 - Sweeps自动调参
 - 写配置文件
 - 启动扫描
 - 开始工作-代理方式
 - 配置信息
 - 指标:metric
 - method:扫描策略
 - early_terminate :停止条件
 
简介
Weights & Biases 可以帮助跟踪你的机器学习项目。使用工具记录运行中的超参数和输出指标(Metric),然后对结果进行可视化和比较,并快速与同事分享你的发现。
好处
首先它和tensorboard的功能类似,但是区别在于可以通过真正的网址随时进行访问,同时他人也能看到你的效果,省去了麻烦的步骤,同时还能方便自己随时随地监工自己的网络运行情况,同时它的sweeps能自己调参优化模型
 
工具
 仪表盘:跟踪实验、可视化结果。
 报告:保存和分享可复制的成果/结论。
 Sweeps:通过调节超参数来优化模型
 Artifacts : 数据集和模型版本化,流水线跟踪。
网址
https://wandb.ai/site,注册一个账号,个人是免费的,然后创建一个项目,然后按照官网提示安装pip install wandb
测试demo
import torch
import torch.nn as nn
import torch.nn.functional as F
import torch.optim as optim
from torchvision import datasets, transforms
import wandbbatch_size = 200
learning_rate = 0.01
epochs = 30wandb.init(# Set the project where this run will be loggedproject=" ",#写自己的entity=" ",#写自己的# Track hyperparameters and run metadataconfig={"learning_rate": learning_rate,"architecture": "MLP","dataset": "MNIST","epochs": epochs,})train_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=True, download=True,transform=transforms.Compose([transforms.ToTensor(),# transforms.Normalize((0.1307,), (0.3081,))])),batch_size=batch_size, shuffle=True)
test_loader = torch.utils.data.DataLoader(datasets.MNIST('../data', train=False, transform=transforms.Compose([transforms.ToTensor(),# transforms.Normalize((0.1307,), (0.3081,))])),batch_size=batch_size, shuffle=True)class MLP(nn.Module):def __init__(self):super(MLP, self).__init__()self.model = nn.Sequential(nn.Linear(784, 200),nn.LeakyReLU(inplace=True),nn.Linear(200, 200),nn.LeakyReLU(inplace=True),nn.Linear(200, 10),nn.LeakyReLU(inplace=True),)def forward(self, x):x = self.model(x)return xdevice = torch.device('cuda:0')
net = MLP().to(device)
optimizer = optim.SGD(net.parameters(), lr=learning_rate)
criteon = nn.CrossEntropyLoss().to(device)global_step = 0for epoch in range(epochs):net.train()for batch_idx, (data, target) in enumerate(train_loader):data = data.view(-1, 28 * 28)data, target = data.to(device), target.cuda()logits = net(data)loss = criteon(logits, target)optimizer.zero_grad()loss.backward()# print(w1.grad.norm(), w2.grad.norm())optimizer.step()global_step += 1if batch_idx % 100 == 0:print('Train Epoch: {} [{}/{} ({:.0f}%)]\tLoss: {:.6f}'.format(epoch, batch_idx * len(data), len(train_loader.dataset),100. * batch_idx / len(train_loader), loss.item()))#展示数据wandb.log({"Train loss": loss.item()})net.eval()test_loss = 0correct = 0for data, target in test_loader:data = data.view(-1, 28 * 28)data, target = data.to(device), target.cuda()logits = net(data)test_loss += criteon(logits, target).item()pred = logits.argmax(dim=1)correct += pred.eq(target).float().sum().item()test_loss /= len(test_loader.dataset)print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'