基于 Keras 对深度学习模型进行微调的全面指南 Part 2
雷锋网按:本文为AI研习社编译的技术博客,原标题A Comprehensive guide to Fine-tuning Deep Learning Models in Keras (Part II),作者为 Felix Yu 。
翻译 | 霍晓燕 校对 | 杨东旭 整理 | 余杭
本部分属该两部系列中的第二部分,该系列涵盖了基于 Keras 对深度学习模型的微调。 第一部分 阐述微调背后的动机和原理,并简要介绍常用的做法和技巧。本部分将详细地指导如何在 Keras 中实现对流行模型 VGG,Inception 和 ResNet 的微调。
为什么选择 Keras ?
Keras
是建立在 Theano 或 TensorFlow 之上的一个极简的神经网络库。该库允许开发人员快速地将想法原型化。除非你正在做一些涉及制定具有截然不同的激活机制的神经架构的前沿研究,否则 Keras 将提供构建相当复杂的神经网络所需的所有构建模块。
同时附带了大量的文档和在线资源。
硬件说明
我强烈建议在涉及繁重计算的Covnet训练时,使用GPU加速。速度差异相当大,我们谈论的 GPU 大约几小时而 CPU 需要几天。
我推荐使用 GTX 980 Ti 或者有点贵的 GTX 1080,它售价约 600 美元。
Keras 微调
我已经实现了基于 Keras 的微调启动脚本,这些脚本存放在这个 github 页面中。包括 VGG16 ,VGG19,GoogleLeNet,nception-V3 和 ResNet50 的实现。这样,你就可以为自己的微调任务定制脚本。
下面是如何使用脚本微调 VGG16 和 Inception-V3 模型的详细演练。
VGG16 微调
VGG16 是牛津大学 视觉几何组 (VGG)在 2014 年 ILVRC(ImageNet)竞赛中使用的 16 层卷积神经网络。该模型在验证集上达到了 7.5% 的前 5 错误率,这使得他们在竞赛中获得了第二名。
VGG16 模型示意图:
可以在 vgg16.py 中找到用于微调 VGG16 的脚本。vgg_std16_model 函数的第一部分是 VGG 模型的结构。定义全连接层之后,我们通过下面一行将 ImageNet 预训练权重加载到模型中:
为了进行微调,我们截断了原始的 softmax 层,并使用下面一段我们自己的代码替换:
最后一行的 num_class 变量代表我们分类任务中的类别标签的数量。
......
想要继续阅读,请移步至我们的AI研习社社区: https://club.leiphone.com/page/TextTranslation/720
更多精彩内容尽在 AI 研习社。
不同领域包括计算机视觉,语音语义,区块链,自动驾驶,数据挖掘,智能控制,编程语言等每日更新。
手机端可以扫描二维码访问
雷锋网 (公众号:雷锋网) 雷锋网
。