import torchvision
from torch.utils.tensorboard import SummaryWriter
data_transform = torchvision.transforms.Compose([torchvision.transforms.ToTensor()])
train_set = torchvision.datasets.CIFAR10(root="./datasets", transform=data_transform, train=True, download=True)
test_set = torchvision.datasets.CIFAR10(root="./datasets", transform=data_transform, train=False, download=True)
writer = SummaryWriter("logs")
for i in range(10):
img, target = test_set[i]
writer.add_image("test_img", img, i)
writer.close()
如何去下载和使用一些标准的数据集呢?
首先,可以根据pytorch的官网里面有各个数据集使用的介绍,主要就是用到了torchvision视觉相关的数据集如COCO等,如上述代码我我们加载了CIFAR10的数据集,CIFAR10是一个类,第一个参数为root主要是指定数据集存放的路径,第二个参数是,transfroms类型,主要是对加载后的数据集金进行怎么样的transfrom,第三个参数是指定你要获取的是数据集里面的训练集,还是测试集,第四个参数是要不要进行下载,第一次加载该数据集肯定要进行下载的,之后默认TURE即可。
我们也可以进行断点,然后debug,查看它的一些属性。
DATALOADER的使用:
dataloader相当于是对数据集进行一个抓取的作用,对整个数据集进行设置batchsize为每个batch进行处理,相当于数据集是一副牌,而dataloader的作用就是如何对这副牌进行发牌。
import torchvision
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
test_set = torchvision.datasets.CIFAR10(root="./datasets", train=False, transform=torchvision.transforms.ToTensor())
test_loader = DataLoader(dataset=test_set, batch_size=64, shuffle=True, num_workers=0, drop_last=False)
# img, target = test_set[0]
# print(img.shape)
# print(target)
writer = SummaryWriter("logs")
for epoch in range(2):
step = 0
for data in test_loader:
imgs, targets = data
# print(imgs.shape)
# print(targets)
writer.add_images("epoch{}".format(epoch), imgs, step)
step = step + 1
writer.close()
首先DATALOADER是一个类,其初始化方法包含很多的参数,主要参数有数据集的指定,batch_size的大小,shuffle参数是决定在每个epoch抓取数据时,顺序是否一样,如果TURE表示每次抓取的顺序不同,也就是随机打乱,num_workers时关于线程的一个参数,一般设置为0,drop_last表示是否丢弃最后不满足batch_size大小的那些图片,Ture表示丢弃
通过上诉操作我们对,数据集进行了batch_size的划分,以及每个epoch的划分