首页 > 其他分享 >keras分类猫狗数据(下)finetune

keras分类猫狗数据(下)finetune

时间:2022-10-26 17:02:57浏览次数:46  
标签:layers keras finetune 分类 add base import model


​keras分类猫狗数据(上)数据预处理​​​
​​​keras分类猫狗数据(中)使用CNN分类模型​​​
​​​keras分类猫狗数据(下)迁移学习​​​
​​​keras分类猫狗数据(番外篇)深度学习CNN连接SVM分类​

1 .使用keras.applications中的vgg16网络模型进行特征提取,并自定义两个全连接层输出分类。

from keras.applications import VGG16
from keras import models,layers,optimizers
from keras.callbacks import TensorBoard

conv_base=VGG16(weights='imagenet',include_top=False,input_shape=(128,128,3))

model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

conv_base.trainable=False

model.summary()

model.compile(optimizer='adam',loss='binary_crossentropy',metrics=['acc'])

import catvsdogs.morph as mp

model.fit_generator(
mp.train_flow,
steps_per_epoch=32,
epochs=50,
validation_data=mp.test_flow,
validation_steps=32,callbacks=[TensorBoard(log_dir='logs/3')])
model.save_weights('outputs/weights_vgg16_use.h5')

keras分类猫狗数据(下)finetune_迭代


keras分类猫狗数据(下)finetune_数据_02


在30多轮迭代后,测试正确率达到88%。

2 . 微调,使vgg16模型的最后一个卷积层也参与训练,本次使用上文保存的训练权重集​​weights_vgg16_use.h5​​加速训练过程,并使用较小的学习率。

from keras.applications import VGG16
from keras import models,layers,optimizers
from keras.callbacks import TensorBoard

conv_base=VGG16(weights='imagenet',include_top=False,input_shape=(128,128,3))

model = models.Sequential()
model.add(conv_base)
model.add(layers.Flatten())
model.add(layers.Dense(256, activation='relu'))
model.add(layers.Dense(1, activation='sigmoid'))

model.load_weights('outputs/weights_vgg16_use.h5')

conv_base.trainable=True
trainable=False
for layer in conv_base.layers:
if layer.name=='block5_conv1':
trainable=True
layer.trainable=trainable
model.summary()

model.compile(optimizer=optimizers.adam(lr=1e-5),loss='binary_crossentropy',metrics=['acc'])

import catvsdogs.morph as mp

history = model.fit_generator(
mp.train_flow,
steps_per_epoch=32,
epochs=50,
validation_data=mp.test_flow,
validation_steps=32,callbacks=[TensorBoard(log_dir='logs/4')])

keras分类猫狗数据(下)finetune_h5_03


keras分类猫狗数据(下)finetune_迭代_04


上图蓝色为本文过程1的,红色为过程2的,正确率到达90%。本文只使用了2000+1000的数据,迭代次数较少,如果想打算更高的识别率,可以简单修改。


标签:layers,keras,finetune,分类,add,base,import,model
From: https://blog.51cto.com/u_15847885/5798055

相关文章

  • keras中的History对象
    keras中的​​fit_generator​​​和​​fit​​函数均返回History对象,那么History怎么用呢?事实上History对象已经记录了运行输出。在了解之前,我们甚至自己定义回调函数记录......
  • keras使用预训练模型inception_v3识别图片
    本文使用keras中inception_v3预训练模型识别图片。结合官方源码,如下内容。其中,数据输入借助opencv-python,程序运行至​​model=InceptionV3()​​​时按需(如果不存在就)下载......
  • 分类算法评价
    分类算法有很多,不同分类算法又用很多不同的变种。不同的分类算法有不同的特定,在不同的数据集上表现的效果也不同,因此需要根据特定的问题和任务选择合适的算法进行求解。对......
  • 详解决策树-分类树【菜菜的sklearn课堂笔记】
    文章换行有问题,望谅解视频作者:菜菜TsaiTsai链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibili关键概念:节点根节点:没有进边,有出边。包含......
  • 【计算机视觉(CV)】基于全连接网络实现宝石分类
    【计算机视觉(CV)】基于全连接网络实现宝石分类作者简介:在校大学生一枚,华为云享专家,阿里云专家博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实践......
  • 【计算机视觉(CV)】基于卷积神经网络实现美食分类
    【计算机视觉(CV)】基于卷积神经网络实现美食分类作者简介:在校大学生一枚,华为云享专家,阿里云星级博主,腾云先锋(TDP)成员,云曦智划项目总负责人,全国高等学校计算机教学与产业实......
  • 概念介绍_软件架构与概念介绍_资源分类
    概念介绍_软件架构1.web概念概述 2.HTML web概念概述 JavaWeb:使用Java语言开发基于互联网的项目软件架构: 1.C/S:Cl......
  • 第4章 最基础的分类算法-k近邻算法 kNN
    4-1k近邻算法基础 ......
  • BZOJ 4801([Lydsy2017年4月月赛]打牌-分类讨论)
    Description小Q同学正在和糖老师一起打(d)牌(p)。这个游戏需要52张牌,分为四种花色(H表示红心,S表示黑桃,C表示梅花,D表示方块),每种花色有A,K,Q,J,10,9,8,7,6,5,4,3,2这么多张牌......
  • 【luogu AGC035E】Develop(分类讨论)(DP)
    Develop题目链接:luoguAGC035E题目大意一开始有-1e18~1e18的所有整数,然后你每次操作可以在1~N中选一个还在的数x,擦掉他,然后查看x-2,x+K,如果没有就把数加上。然后......