基于 Keras 对深度学习模型进行微调的全面指南 Part 2

本部分属该两部系列中的第二部分,该系列涵盖了基于 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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180813C1APYW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券