迁移学习
在我们学习深度学习的过程中,往往需要大数据,深网络。但有时我们很难同时获取这些条件。这时我们可以使用其他任务开发的模型来应用于我们自己的任务。而这,就是迁移学习。
迁移学习是机器学习的一种方法,可以将预训练的模型作为新模型的起点,这些预训练的模型在开发神经网络的时候已经在大数据集上训练好,模型的设计也好,因此我们有时候可以拿来使用。
另外我们有时候需要针对很多任务训练不同的模型,这样很浪费资源。合理使用迁移学习,可以使一个模型适用于多个任务,节约了计算资源。
迁移学习就是把预训练好的模型迁移到新的任务上
net = models.resnet18(pretrained=True)
print(net)
这里使用迁移学习,使用resnet18模型
预训练模型可以通过传递参数pretrained=True构造。
数据增强
在我们学习CIFAR10分类案例时,我们的正确率,并不高,68%左右,这是因为我们没有更多的数据去训练。因此,我们最终的结果并不是很好。因此我们需要使用数据增强,去提高我们的训练数据。
数据增强可以通过水平或垂直翻转图像、裁剪、色彩变换、扩展和旋转灯数据增强技术来增加数据量
1.随机比例缩放
transforms.RandomResized((100,200)),
#使图像变为200×100
2.裁剪
transforms.RandomCrop(200)
#裁剪出200×200的区域
3.翻转
transforms.RandomRotation(degrees=15),
transforms.RandomHorizontalFlip(),
transforms.RandomVerticalFlip(),
4.改变颜色
transforms.ColorJitter(hue=0.5),
#随机从-0.5~0.5之间对颜色变化
有了这些数据增强方法,可以使我们的训练数据明显增多,最终的正确率也会明显提高。但因为要训练的数据变多,参数也会变多很多,所以训练比较慢。