- 构建验证集
在机器学习与深度学习模型的训练过程中,模型非常容易出现过拟合的现象。构建验证集能够有效解决过拟合问题,验证集需要尽可能与测试集保持一致,在训练过程中不断验证模型在验证集上的精度,以此控制模型训练。
验证集构建方法
(1)留出法(Hold-out)
这种方法直接将训练集分成新的训练集与验证集。优点是直接简单,缺点是只得到一份验证集,有可能导致模型在验证集上出现过拟合。留出法适用于数据量较大的情况。
(2)交叉验证法(Cross Validation)
将训练集划分为K份,将其中的K-1份作为训练集,剩余的一份作为验证集,循环K训练。这种划分方法使所有的训练集都是验证集,最终模型验证精度都是K份平均得到。优点是验证机京都较高,训练K次可以得到K个有多样性差异的模型;缺点是需要训练K次,不适用于大数据量。
(3)自助采样法(BootStrap)
通过有放回的采样方式得到新的训练集与验证集,每次训练集和验证集都有区别。此方法适用于小数据量情况。
#定义读取数据dataloader
train_path = glob.glob('F:\目标检测\街景字符识别\mchar_train\mchar_train/*.png')#匹配所有的符合条件的文件,并将其以list的形式返回。
train_path.sort()
train_json = json.load(open('F:\目标检测\街景字符识别\mchar_train/mchar_train.json'))#从json文件中读取数据
train_label = [train_json[x]['label'] for x in train_json]
print(len(train_path), len(train_label))
train_loader = torch.utils.data.DataLoader(
SVHNDataset(train_path, train_label,
transforms.Compose([
transforms.Resize((64, 128)),#缩放尺寸
transforms.RandomCrop((60, 120)),#RandomCrop(size, padding=0)随机裁剪。si