这是从pytorch transfer learning tutorial将图像作为数据集加载的代码段:
data_transforms = {
'train': transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
'val': transforms.Compose([
transforms.Resize(256),
transforms.CenterCrop(224),
transforms.ToTensor(),
transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])
]),
}
data_dir = 'data'
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
data_transforms[x])
for x in ['train', 'val']}
dataloaders = {x: torch.utils.data.DataLoader(image_datasets[x], batch_size=4,
shuffle=True, num_workers=4)
for x in ['train', 'val']}
dataset_sizes = {x: len(image_datasets[x]) for x in ['train', 'val']}
这是dataset中的一个示例:
^{pr2}$是否有任何方法(最佳实践)来更改数据集中的示例数据,例如将标签0更改为标签1。以下操作无效:
image_datasets['val'][0] = (image_datasets['val'][0][0], 1)
是的,虽然不容易编程。标签来自torchvision.datasets.ImageFolder,反映了数据集的目录结构(如硬盘上所示)。首先,我想您可能想知道作为字符串的目录名。这一点没有得到很好的记录,但是dataloader有一个
classes
属性来存储这些属性。所以如果您希望一致地返回这些而不是类id,可以使用
^{pr2}$target_transform
api,如下所示:这将使加载程序从现在起返回字符串而不是id。如果您正在寻找更高级的东西,您可以从}重新实现/继承并实现自己的语义。您只需要提供}。在
ImageFolder
或{__len__
和{相关问题 更多 >
编程相关推荐