Chinaunix首页 | 论坛 | 博客
  • 博客访问: 18653
  • 博文数量: 6
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 85
  • 用 户 组: 普通用户
  • 注册时间: 2020-04-20 10:15
文章分类
文章存档

2020年(6)

我的朋友
最近访客

分类: 大数据

2020-04-20 10:31:20

现实中,存在一些深度学习任务,某些样本的数据集样本量较少,面对这样的情况,我们该怎么做呢?
通常有如下几种方式:
1数据增强,通过图像裁剪,水平翻转等方式丰富有限的样本集。


2使用在大规模多种类数据集上训练好的AI模型,例如VGG16,
ResNet,作为预训练模型,使得小样本集在通用的特征提取器运作。


3由于数据集较少,在构建训练模型时,可以加入Dropout层,避免
样本局限带来的过拟合问题。


4在测试数据集上,进行数据匹配获取更多维度特征,填充标
签,丰富测试数据集质量,迭代引擎规则+预训练模型
训练新分类器后的分类模型。

在使用预训练模型时,请注意如下:
预训练模型的某个卷积层的通用性(以及可复用性)取决于该层在模型中的深度。模型中更靠近底部的层提取的是局部的、高度通用的特征图(比如视觉边缘、颜色和纹理),近顶部层则是越接近任务指向型的更加宏观整体的特定分类(比如识别“猫耳朵”或“狗眼睛”)。 因此,如果你的新数据集与原始模型训练的数据集有很大差异,那么最好只使用模型的前几层来做特征提取,而不是使用整个卷积基。

预训练模型的选择:
基于ImageNet 数据集上预训练得到的深度学习模型,以下都可以参考作为我们今天的预训练模型:


Xception
Inception V3
ResNet50
VGG16
VGG19

以上模型都是内置于keras.applications 中的图像分类模型,使用时只要调用keras相应模块。


下面以使用VGG16作为预训练模型,在小样本集上训练猫狗分类任务为实战,代码如下:
首先实例化一个VGG16模型出来,由于VGG16 也内置于 Keras 中,我们从 keras.applications类 模块中导入,然后进行实例


from keras.applications import VGG16
conv_base = VGG16(weights='imagenet',
                  include_top=False,
                  input_shape=(150, 150, 3))



阅读(1020) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~