迁移学习概论( 二 )


文章插图
 
上图是我们模型的摘要 , 在全连接层 , 我们有两个节点 , 因为两个不同的类别我们有肺炎和正常 。
编译我们使用categoricaa_cross_entropy作为损失 , adam优化器和精度作为度量标准来编译我们的模型 。
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])预处理为了避免过度拟合 , 我们将对训练图像进行一些变换 , 如果不进行变换 , 训练集和测试集的精度会有很大的差异 。
我们执行一些几何变换 , 比如水平翻转图像、垂直翻转图像、放大、缩小等等 , 我们应用它 , 这样我们的模型就不会过拟合我们的训练图像 。我们使用ImageDataGenerator类执行上述方法 。
我们不为测试集应用转换 , 因为我们只使用它们来评估 , 我们测试集的唯一任务就是重新调整图像大小 , 因为在训练部分 , 我们为图像定义了一个可以输入网络的目标大小 。
from keras.preprocessing.image import ImageDataGeneratortrain_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=https://www.isolves.com/it/ai/2020-11-03/test_set,epochs=5,steps_per_epoch=len(training_set),validation_steps=len(test_set))

迁移学习概论

文章插图
 
很好 , 我们达到了97.7%的准确率和91.5%的验证准确率 , 这就是迁移学习的力量 。希望你喜欢这篇关于迁移学习的教程 。

【迁移学习概论】


推荐阅读