【深度学习03】TensorBoard+Transforms+Dataload的使用


⭐本文内容:TensorBoard、Transforms、Dataload

TensorBoard

from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter("logs")
for i in range(100):
  writer.add_scalar("y=x",i,i)

writer.close()
%load_ext tensorboard
%tensorboard --logdir /content/logs #注意路径

%tensorboard --logdir /content/logs:保存这个插件,到logs文件夹中

writer = SummaryWriter("logs"):()里面的logs,是%tensorboard --logdir /content/logs的logs

类“SummaryWriter”提供了创建事件文件的高级API 并添加摘要和事件。类更新 异步文件内容。这允许培训程序调用方法 直接从训练循环向文件中添加数据,而不会减慢速度训练

writer.add_image()函数

  • 示例:writer.add_image("test",img,1,dataformats='HWC') #注意dataformats='HWC'表示通道、长、宽的排序

  • 作用:添加image到tensorBoard中

  • 参数:

    • img_tensor:数据类型(torch.Tensor, numpy.array, or string/blobname)
image-20220506195554069

Transforms

Transforms:图像预处理的工具

image-20220506202035724

变换数据类型:tensor_trans = transforms.ToTensor()(img),注意在()后面加上(img)

Dataload

import torchvision
from torch.utils.data import DataLoader
# 准备测试集 
test_data = torchvision.datasets.CIFAR10("/content/drive/MyDrive/Learn-	                     pytorch/dataset",train=False,download=True,transform=torchvision.transforms.ToTensor())

test_loader = DataLoader(dataset=test_data,batch_size=64,shuffle=True,num_workers=0)

torchvision.datasets()函数

  • 示例:test_data = torchvision.datasets.CIFAR10("/content/drive/MyDrive/Learn-pytorch/dataset",train=False,download=True,transform=torchvision.transforms.ToTensor())
  • 作用:加载官方自带的数据集,返回img,target(图片+标签)
  • 参数:
    • .CIFAR10:数据集名称
    • “/content/drive/MyDrive/Learn-pytorch/dataset”:数据集的路径,如没有则新建一个文件夹
    • train=False:是不是用来训练的,如:train=False表示是测试集
    • download=True:是否下载
    • transform=torchvision.transforms.ToTensor():数据格式的转换

DataLoader()函数

  • 示例:test_loader = DataLoader(dataset=test_data,batch_size=64,shuffle=True,num_workers=0)
  • 作用:和torchvision.datasets()联用,将数据集以一定的方式打包
  • 参数:
    • batch_size=64:一个test_data随机抓取64张图片
writer = SummaryWriter("dataloader")
step = 0
for data in test_loader:
  imgs,targets = data
  writer.add_images("test_image",imgs,step)
  step = step+1

writer.close()

🚀注意SummaryWriter(“dataloader”)、writer.add_images

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
使用深度学习绘图风格的方法需要使用神经风格迁移算法。该算法可以将一幅图像的风格与另一幅图像的内容结合起来,生成一幅新的图像,具有原图像的内容和绘图风格。 以下是使用深度学习绘图风格的步骤: 1. 准备图像:准备一张作为内容图像,一张作为风格图像。 2. 加载模型:下载一个预训练的神经网络模型,例如VGG19。 3. 特征提取:通过模型,从内容图像和风格图像中提取出特征。 4. 计算损失:计算内容损失和风格损失,这是生成图像的关键步骤。 5. 反向优化:使用梯度下降算法,调整生成图像,以最小化损失函数。 6. 重复迭代:重复以上步骤,直到生成的图像满足要求。 以下是使用PythonPyTorch库实现深度学习绘图风格的简单代码示例: ```python import torch import torch.nn as nn import torch.optim as optim import torchvision.models as models import torchvision.transforms as transforms from PIL import Image # 加载图像和模型 content_img = Image.open("content.jpg") style_img = Image.open("style.jpg") vgg = models.vgg19(pretrained=True).features device = torch.device("cuda" if torch.cuda.is_available() else "cpu") vgg.to(device).eval() # 图像预处理 transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(256), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) ]) content_tensor = transform(content_img).unsqueeze(0).to(device) style_tensor = transform(style_img).unsqueeze(0).to(device) # 定义损失函数 class ContentLoss(nn.Module): def __init__(self, target): super(ContentLoss, self).__init__() self.target = target.detach() def forward(self, input): self.loss = nn.functional.mse_loss(input, self.target) return input class StyleLoss(nn.Module): def __init__(self, target): super(StyleLoss, self).__init__() self.target = target.detach() def gram_matrix(self, input): batch_size, channels, h, w = input.size() features = input.view(batch_size * channels, h * w) G = torch.mm(features, features.t()) return G.div(batch_size * channels * h * w) def forward(self, input): G = self.gram_matrix(input) self.loss = nn.functional.mse_loss(G, self.target) return input # 定义生成图像的初始值 input_tensor = content_tensor.clone().requires_grad_(True) # 定义优化器 optimizer = optim.LBFGS([input_tensor]) # 迭代优化 content_features = vgg(content_tensor) style_features = vgg(style_tensor) content_loss = ContentLoss(content_features) style_loss = StyleLoss(style_features) for i in range(300): def closure(): input_tensor.data.clamp_(0, 1) optimizer.zero_grad() input_features = vgg(input_tensor) content_loss(input_features[3]) style_loss(input_features[0]) style_loss(input_features[2]) style_loss(input_features[4]) total_loss = content_loss.loss + style_loss.loss total_loss.backward() return total_loss optimizer.step(closure) # 保存生成图像 output_img = input_tensor.detach().squeeze() output_img = transforms.ToPILImage()(output_img.cpu()) output_img.save("output.jpg") ``` 这段代码会生成一张新的图像,该图像结合了内容图像和风格图像的特点。你可以尝试使用不同的内容和风格图像,以及调整迭代次数和损失函数的权重,来产生不同的效果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落叶随峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值