python - “x:”和以下行的含义是什么?
问题描述
x:
以下行的和是什么意思?
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
data_transforms[x])
有人可以解释这一行的语法吗?
它来自 PyTorch 教程: https ://pytorch.org/tutorials/beginner/transfer_learning_tutorial.html
# Data augmentation and normalization for training
# Just normalization for validation
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/hymenoptera_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']}
class_names = image_datasets['train'].classes
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
解决方案
image_datasets = {x: datasets.ImageFolder(os.path.join(data_dir, x),
data_transforms[x])
for x in ['train', 'val']}
x
来自for
你下面的。for x in ['train', 'val']
,因此对于 中的每个值['train', 'val']
,您正在创建一个dict
其中x
的关键。
正如Kabanus所说,这种结构是一个字典理解,一个字典生成器。
您可以在此处了解有关生成器的更多信息:https ://docs.python.org/3/tutorial/classes.html#generators
推荐阅读
- angularjs - $watch 在指令中的使用
- r - R - 如何使用 metafor 包绘制森林图?
- python - 基于父键值的列表组
- java - 修改父类方法的功能(通过子类)而不更改其签名
- javascript - 如何每次重新加载网页,并从后端获取最新数据
- python - python中的视频编辑。使用 mhmovie 在 python 中组合 .mp3 和 .mp4 文件
- c - 在C上将浮点数转换为char数组
- python - 无法编译 cython 生成的 .c 文件
- python - 我可以在 android 上使用 python 的 pyglet 库吗?
- angular - 如何在 [ngClass] 中使用自定义属性指令?