以AlexNet为例,添加一些PyTorch函数的整理。
torchvision.transforms.Compose()和torchvision.transforms.[functions]
Compose()类可以将多个transforms对象合在一起给数据进行预处理,常以多个transforms对象的list形式传入Compose()中,如transforms.Compose([])
。transforms.[functions]则可以对多个输入数据进行变换,Compose()函数原型如下:
# 原型
torchvision.transforms.Compose(transforms)
# example
data_transform = {
"train": transforms.Compose([
transforms.RandomResizedCrop(224),
transforms.RandomHorizontalFlip(),
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
]),
"val": transforms.Compose([
transforms.Resize((224, 224)),
transforms.ToTensor(),
transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
])
}
torchvision.datasets.ImageFolder()类
ImageFolder()用于加载数据集,它说到底还是继承自torch.utils.data.Dataset
,后续可以作为Dataset对象直接传入torch.utils.data.DataLoader
中。对于ImageFolder(),root是要加载数据集的路径,transforms是对数据进行预处理的方式,函数原型和example如下:
# 原型
torchvision.datasets.ImageFolder(root: str, transform: Optional[Callable] = None,
target_transform: Optional[Callable] = None, loader: Callable[[str], Any] = <function default_loader>, is_valid_file: Optional[Callable[[str], bool]] = None)
# example
train_dataset = datasets.ImageFolder(root=project_path + "/flower_data/train", transform=data_transform["train"])
python 列表生成式和生成器
python 常见列表生成式 和 生成器,其中列表生成式以[]圈起,生成器以()圈起,常见列表生成器如下:
而生成器则是把中括号改成小括号。
# 列表生成式
generate_list = [i for i in range(10) if i < 5]
# 生成器
cla_dict = dict((val, key) for key, val in flower_list.items()) # 解包取出键值对,生成dict字典,赋值给cla_dict