PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】_哔哩哔哩_bilibili
一.数据集的读取from torch.utils.data import Dataset
from PIL import Image
import os
class MyData(Dataset):
def __init__(self, root_dir, label_dir): #初始化
self.root_dir = root_dir #当前目录
self.label_dir = label_dir #标签目录
self.path = os.path.join(self.root_dir, self.label_dir) #将两个地址合并
self.img_path = os.listdir(self.path) #将文件名称放到一个列表里面
def __getitem__(self, idx): #读取数据
img_name = self.img_path[idx] #文件名
img_item_path = os.path.join(self.root_dir, self.label_dir, img_name) #文件路径
img = Image.open(img_item_path) #用库读取图片
label = self.label_dir
return img, label
def __len__(self): #返回训练集大小
return len(self.img_path)
root_dir = 'dataset/train'
ants_label_dir = 'ants'
ants_dataset = MyData(root_dir, ants_label_dir)
bees_label_dir = 'bees'
bees_dataset = MyData(root_dir, bees_label_dir)
train_dataset = ants_dataset + bees_dataset
print(len(train_dataset))
img, label = train_dataset[5]
img.show()
二.tensorboard绘图
from torch.utils.tensorboard import SummaryWriter
writer = SummaryWriter('123') #draw是新建文件夹的名字
#绘制y = 2x的图
for i in range(100):
writer.add_scalar('y = 2x', 2 * i, i) #先y轴后x轴
writer.close()
from torch.utils.tensorboard import SummaryWriter
import numpy as np
from PIL import Image
writer = SummaryWriter('123')
image_path = 'dataset/train/ants/57264437_a19006872f.jpg'
img_PIL = Image.open(image_path)
img_array = np.array(img_PIL) #tensorboard读取numpy 要先转化
writer.add_image('test', img_array, 1, dataformats='HWC') #名称 数据 第几步 数据格式(通道是第几个)
#绘制y = 2x的图
for i in range(100):
writer.add_scalar('y = 2x', 2 * i, i)
writer.close()
三.tensorforms的使用
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img_path = 'dataset/train/bees/44105569_16720a960c.jpg'
img = Image.open(img_path)
writer = SummaryWriter('pic')
#transforms相当于一个工具箱 取出一个类ToTensor
#可以实现将PIL或numpy转化为tensor这个数据类型
#tensor包含了很多神经网络的参数 如梯度
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
#writer可以读取numpy和tensor
writer.add_image('tensor_img', tensor_img)
writer.close()
from PIL import Image
from torch.utils.tensorboard import SummaryWriter
from torchvision import transforms
img = Image.open('dataset/train/bees/149973093_da3c446268.jpg')
writer = SummaryWriter('456')
#ToTensor
tensor_trans = transforms.ToTensor()
tensor_img = tensor_trans(img)
writer.add_image('tensor_img', tensor_img)
#Normalize 每个元素减去mean除以std
#第一个参数mean第二个参数std 三个通道
trans_norm = transforms.Normalize([1, 2, 3], [0.5, 0.5, 0.5])
img_norm = trans_norm(tensor_img)
writer.add_image('Normalize', img_norm, 2)
writer.close()



