我们执行一些几何变换,比如水平翻转图像、垂直翻转图像、放大、缩小等等,我们应用它,这样我们的模型就不会过拟合我们的训练图像。我们使用ImageDataGenerator类执行上述方法。
我们不为测试集应用转换,因为我们只使用它们来评估,我们测试集的唯一任务就是重新调整图像大小,因为在训练部分,我们为图像定义了一个可以输入网络的目标大小。
from keras.preprocessing.image import ImageDataGenerator train_datagen = ImageDataGenerator(rescale = 1./255, shear_range = 0.2, zoom_range = 0.2, horizontal_flip = True) test_datagen = ImageDataGenerator(rescale = 1./255)flow_from_directory将图像增强过程连接到我们的训练集。我们需要传递我们训练集的路径。Target size是需要输入神经网络的图像的大小。batch size定义32,class mode是分类(categorical)的,因为我们只有两个输出。
training_set = train_datagen.flow_from_directory(\'Datasets/train\', target_size = (224, 224), batch_size = 32, class_mode = \'categorical\')现在我们定义从目录导入测试映像的测试集。我们定义了参数,跟训练集一样。
test_set = test_datagen.flow_from_directory(\'Datasets/test\', target_size = (224, 224), batch_size = 32, class_mode = \'categorical\') 拟合模型我们将拟合我们的模型,并声明epoch的数量为5,每个epoch的长度是训练集的长度,验证的长度是测试集的长度。
r = model.fit_generator( training_set, validation_data=test_set, epochs=5, steps_per_epoch=len(training_set), validation_steps=len(test_set) )很好,我们达到了97.7%的准确率和91.5%的验证准确率,这就是迁移学习的力量。希望你喜欢这篇关于迁移学习的教程。
原文链接:https://towardsdatascience.com/introduction-to-transfer-learning-c59f6f27e3e
欢迎关注磐创AI博客站:
sklearn机器学习中文官方文档:
欢迎关注磐创博客资源汇总站: