一、Tensorboard--可视化工具

1.使用逻辑:将代码运行过程中的某些数据保存在一个文件夹中,再读取这个文件夹中的数据,用浏览器显示出来

2.代码:

from torch.utiis.tensorboard import SummaryWriter
writer = SummaryWriter("logs")
#针对数值标量
#writer.add_scalar(tag, scalar_value, global_step = None, walltime = None)
#global_step对应x轴,scalar_value对应y轴
#例如:
for i in range(100):
  writer.add_scalar("y=2x", 2*i, i)
writer.close()
writer.add_scalar("train_loss", loss.item(), total_train_step)
#针对图像
#writer.add_image(tag, img_tensor, global_step=None, walltime=None, dataformats='CHW')通道数、高、宽
#writer.add_images(tag, img_tensor, global_step=None, walltime=None, dataformats='NCHW')
#以上两个函数只接受tensor型或者numpy.array型的图片
#1) tensor型 使用torchvision.transforms.ToTensor()
#2) numpy.array型 使用np.array(img_PIL)-->img_PIL=Image.open(image_path)或者用opencv读入 cv2.imread(image_path)
#例如:
test_data = torchvision.datasets.CIFAR10(root="./datasets", train=False, transform=torchvision.transforms.ToTensor(), download=True)
test_loader = DataLoader(dataset=test_data, batchsize=64, shuffle=True, num_workers=0,drop_last=False)
#img_tensor = torchvision.transforms.ToTensor(img)-->img = Image.open(image_path)以PIL格式打开
for i in range(10):
  img, target = test_data[i]
  writer.add_image("test_data", img, i)

step = 0
for epoch in range(2):
  for data in test_loader:
    imgs, targets = data
    writer.add_images("Epoch:{}".format(epoch), imgs, step)
    step = step + 1

writer.close()
#终端输入:tensorboard --logdir logs --port=6007

二、Transforms--常用的图像预处理方法

[可参考](https://blog.csdn.net/u011995719/article/details/85107009)

train_transform = transforms.Compose([
    transforms.Resize((32, 32)),  # 改变图片大小(H,W)
    transforms.RandomCrop(32, padding=4),  # 随机裁剪
    transforms.ToTensor(),  # 图片转张量,同时归一化0-255 ---》 0-1
    transforms.Normalize(norm_mean, norm_std),  # 均值,标准差
])