我想从我原来的火车组创建一个火车+乘车组。该目录分为训练和测试。我加载了原始训练集,并希望将其分为训练集和验证集,因此我可以在训练期间使用 train_loader 和 val_loader 来避免验证损失。
关于此的文档并不多,可以清楚地说明事情。
答案 0 :(得分:0)
查看答案here。
我也将其发布在下方。
================================================ =======
使用for post in posts {
let url = URL(string: "https://api.tdameritrade.com/v1/marketdata/\(post.symbol)/quotes")!
...
}
读取数据。任务是对二进制图像进行分类,数据集中的498张图像在两个类别之间平均分布(每个图像249张)。
ImageFolder
img_dataset = ImageFolder(..., transforms=t)
SubsetRandomSampler
dataset_size = len(img_dataset)
dataset_indices = list(range(dataset_size))
np.random.shuffle(dataset_indices)
val_split_index = int(np.floor(0.2 * dataset_size))
train_idx, val_idx = dataset_indices[val_split_index:], dataset_indices[:val_split_index]
train_sampler = SubsetRandomSampler(train_idx)
val_sampler = SubsetRandomSampler(val_idx)
train_loader = DataLoader(dataset=img_dataset, shuffle=False, batch_size=8, sampler=train_sampler)
validation_loader = DataLoader(dataset=img_dataset, shuffle=False, batch_size=1, sampler=val_sampler)
这里,在498张图像中,随机分配了400张用于训练,其余98张用于验证。
random_split
dataset_train, dataset_valid = random_split(img_dataset, (400, 98))
train_loader = DataLoader(dataset=dataset_train, shuffle=True, batch_size=8)
val_loader = DataLoader(dataset=dataset_valid, shuffle=False, batch_size=1)
如果有人偶然在这里搜索
WeightedRandomSampler
,请查看@ptrblck的答案here,以获取对下面发生的事情的很好的解释。
现在,WeightedRandomSampler
如何适合创建火车+定额集?因为与WeightedRandomSampler
或SubsetRandomSampler
不同,我们在这里不讨论火车和火车票。我们只是确保在培训过程中每批次获得相同数量的课程。
因此,我的猜测是我们需要在{strong> random_split()
或WeightedRandomSampler
之后使用random_split()
。但这不能确保train和val在类之间具有相似的比率。
SubsetRandomSampler