TensorBoardX add_image()输出图片与torchvision.transforms.Normalize()标准化需要注意的地方

本文介绍了在使用TensorBoardX的add_image()输出图片时应注意的事项,包括label_name的唯一性、图像维度和值域范围。同时,详细讨论了torchvision.transforms.Normalize()在图像标准化过程中的作用,指出其会将图像值域转换到[-1, 1],并提供了相关转换的公式。" 127674151,8086594,YOLOv5改进:添加SE注意力机制,"['目标检测', '深度学习', '计算机视觉', '神经网络', 'YOLO']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

TensorBoardX add_image()输出图片与torchvision.transforms.Normalize()标准化

版权归属:

更多关注:

1、TensorBoardX add_image()输出图片需要注意的地方

pytorch中调用TensorBoardX显示图片的方法如下:

from tensorboardX import SummaryWriter

writer = SummaryWriter(log_dir)
# display image
writer.add_image('label_name', img, global_step=total_step)

首先,label_name必须是一个唯一的名字,特别需要注意的是防止与add_scale()中的名字重复,这样子会出现莫名的错误;

其次,参数img可以是numpy or torch.Tenso

好的,以下是将代码修改为二分类的版本: ``` import torch import torchvision from torch.utils.tensorboard import SummaryWriter from torch import nn, optim from torch.utils.data import DataLoader from torchvision.transforms import transforms from module import MyModule # 加载数据集 train_transform = transforms.Compose([ transforms.Resize((224, 224)), transforms.ToTensor(), transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))]) train_dataset = torchvision.datasets.CIFAR10(root="../data", train=True, download=True, transform=train_transform) train_loader = DataLoader(train_dataset, batch_size=128, shuffle=True) # 构建VGG网络并修改输出层 vgg_model = torchvision.models.vgg16(pretrained=True) vgg_model.classifier = nn.Sequential( nn.Linear(25088, 4096), nn.ReLU(inplace=True), nn.Dropout(), nn.Linear(4096, 4096), nn.ReLU(inplace=True), nn.Dropout(), nn.Linear(4096, 2), nn.LogSoftmax(dim=1) ) model = MyModule() # 设置超参数 epochs = 5 learning_rate = 0.001 optimizer = optim.SGD(vgg_model.parameters(), lr=learning_rate) loss_fn = nn.NLLLoss() writer = SummaryWriter(log_dir="Training") step = 0 # 训练模型 for epoch in range(epochs): total_loss = 0 for data, labels in train_loader: optimizer.zero_grad() output = vgg_model(data) loss = loss_fn(output, labels) loss.backward() optimizer.step() writer.add_scalar("Training Loss", loss, step) step += 1 if step % 100 == 0: print("Training for {0} times".format(step)) total_loss += loss.item() print("Epoch {0}, total loss: {1}".format(epoch + 1, total_loss)) writer.close() # 保存模型 torch.save(vgg_model, "model_vgg.pth") ``` 在这个版本中,我们使用了`nn.LogSoftmax`作为最后一层的激活函数,并使用`nn.NLLLoss()`作为损失函数。同时,我们将VGG网络的输出层修改为一个具有两个输出节点的线性层。另外,我们还对输入图片进行了大小调整和归一化处理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值