pytorch基本使用

自定义一个数据集

from torch.utils.data import Dataset
import os
import cv2

# 定义一个类,继承Dataset
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(root_dir, label_dir)
        self.img_path = os.listdir(self.path)



    def __getitem__(self, index):
        img_name = self.img_path[index]
        img_item_path = os.path.join(self.root_dir, self.label_dir, img_name)
        img = cv2.imread(img_item_path)
        return img, self.label_dir

    def __len__(self):
        return len(self.img_path)

root_dir = 'dataset/hymenoptera_data/train'

ants_dataset = MyData(root_dir, 'ants')
img, label = ants_dataset[0]
cv2.imshow('img', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Tensorboard的使用

from torch.utils.tensorboard import SummaryWriter

writer = SummaryWriter('logs')
for i in range(100):
    writer.add_scalar("y = x", i, i)

writer.close()

Transforms的使用

from PIL import Image
from torchvision import transforms

img_path = 'dataset/hymenoptera_data/train/ants/6240329_72c01e663e.jpg'
img = Image.open(img_path)

# 得到一个ToTensor的对象
tensor_trans = transforms.ToTensor()
# 将img转换为tensorImg
tensor_img = tensor_trans(img)
print(tensor_img)

结合pytorch的数据集,使用transforms

import torchvision
import ssl
# 去掉ssl证书
from torch.utils.tensorboard import SummaryWriter

ssl._create_default_https_context = ssl._create_unverified_context

dataset_transforms = torchvision.transforms.Compose([
    torchvision.transforms.ToTensor()
])

train_set = torchvision.datasets.CIFAR10(root='./torch_dataset', train=True, transform=dataset_transforms, download=True)
test_set = torchvision.datasets.CIFAR10(root='./torch_dataset', train=False, transform=dataset_transforms, download=True)

print(train_set[0])

img, target = train_set[0]

writer = SummaryWriter("pytorch_dataset_logs")
for i in range(100):
    img, target = test_set[i]
    writer.add_image("test_set", img, i)

DataLoader

import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

# 测试集
test_data = torchvision.datasets.CIFAR10('./torch_dataset', transform=torchvision.transforms.ToTensor(), train=False)

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

# print(img.shape)
# print(target)

writer = SummaryWriter('dataLoader')

step = 0
for data in test_loader:
    img, target = data
    writer.add_images("test_data_loader", img, step)

    step = step + 1

writer.close()

上一篇:Pytorch-Lightning训练技巧


下一篇:pytorch基础(八)----------transforms图像增强(二)