DeepLearning tutorial(7)深度学习框架Keras的使用-进阶

原创 2015年05月08日 16:01:40

2016.07.05
致读者:本文写于keras开发初期,目前keras已经迭代到1.0版本,很多API都发生了较大的变化,所以本文的粘贴的一些代码可能已经过时,在我的github上有更新后的代码,读者需要的话可以看github上的代码:https://github.com/wepe/MachineLearning

更多进阶的使用方法,我会在gist上持续更新:https://gist.github.com/wepe/a05ad572dca002046de443061909ff7a

上一篇文章总结了Keras的基本使用方法,相信用过的同学都会觉得不可思议,太简洁了。十多天前,我在github上发现这个框架的时候,关注Keras的人还比较少,这两天无论是github还是微薄,都看到越来越多的人关注和使用Keras。所以这篇文章就简单地再介绍一下Keras的使用,方便各位入门。

主要包括以下三个内容:

  • 训练CNN并保存训练好的模型。
  • 将CNN用于特征提取,用提取出来的特征训练SVM。
  • 可视化CNN卷积层后的特征图。

仍然以Mnist为例,代码中用的Mnist数据到这里下载
http://pan.baidu.com/s/1qCdS6,本文的代码在我的github上:dive_into _keras


1. 加载数据

数据是图片格式,利用pyhton的PIL模块读取,并转为numpy.array类型。这部分的代码在data.py里:


2. 训练CNN并保存训练好的CNN模型

将上一步加载进来的数据分为训练数据(X_train,30000个样本)和验证数据(X_val,12000个样本),构建CNN模型并训练。训练过程中,每一个epoch得到的val-accuracy都不一样,我们保存达到最好的val-accuracy时的模型,利用Python的cPickle模块保持。(Keras的开发者最近在添加用hdf5保持模型的功能,我试了一下,没用成功,去github发了issue也没人回,估计还没完善,hdf5压缩率会更高,保存下来的文件会更小。)

这部分的代码在cnn.py里,运行:

python cnn.py

在第Epoch 4得到96.45%的validation accuracy,运行完后会得到model.pkl这份文件,保存的就是96.45%对应的模型:

这里写图片描述


3.将CNN用于特征提取,用提取出来的特征训练SVM

上一步得到了一个val-accuracy为96.45%的CNN模型,在一些论文中经常会看到用CNN的全连接层的输出作为特征,然后去训练其他分类器。这里我也试了一下,用全连接层的输出作为样本的特征向量,训练SVM。SVM用的是scikit learn里的算法。

这部分代码在cnn-svm.py,运行:

python cnn-svm.py

得到下图的输出,可以看到,cnn-svm的准确率提高到97.89%:

这里写图片描述


4.可视化CNN卷积层后的特征图

将卷积层和全连接层后的特征图、特征向量以图片形式展示出来,用到matplotlib这个库。这部分代码在get_feature_map.py里。运行:

python get_feature_map.py

得到全连接层的输出,以及第一个卷积层输出的4个特征图:

全连接层后的输出

这里写图片描述

这里写图片描述

这里写图片描述

这里写图片描述


转载请注明出处:http://blog.csdn.net/u012162613/article/details/45581421

版权声明:本文为博主原创文章,未经博主允许不得转载。

基于Theano的深度学习框架keras及配合SVM训练模型

1.介绍 Keras是基于Theano的一个深度学习框架,它的设计参考了Torch,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。keras官方文档地址 地址 2.流程...
  • a819825294
  • a819825294
  • 2016年05月06日 20:35
  • 8898

CNN中使用SVM进行分类(keras的实现)

相关理论可以看这篇文章 Deep Learning using Linear Support Vector Machines,ICML 2013 主要使用的是SVM的hinge loss形式的损失函数...
  • ying86615791
  • ying86615791
  • 2017年05月07日 20:03
  • 3117

使用keras预训练VGG16模型参数分类图像并提取特征

#coding=utf-8 #keras==0.3.0 theano==0.8.0 python==2.7.13 from keras.models import Sequential from ke...
  • xinfeng2005
  • xinfeng2005
  • 2017年04月16日 16:51
  • 5357

关于图像特征提取

网上发现一篇不错的文章,是关于图像特征提取的,给自己做的项目有点类似,发出来供大家参考。        特征提取是计算机视觉和图像处理中的一个概念。它指的是使用计算机提取图像信息,决定每个图像的...
  • u012556077
  • u012556077
  • 2015年12月22日 22:40
  • 976

深度学习框架Keras使用心得

最近几个月为了写小论文,题目是关于用深度学习做人脸检索的,所以需要选择一款合适的深度学习框架,caffe我学完以后感觉使用不是很方便,之后有人向我推荐了Keras,其简单的风格吸引了我,之后的四个月我...
  • u010159842
  • u010159842
  • 2017年01月06日 11:35
  • 2971

卷积神经网络实战(可视化部分)——使用keras识别猫咪

在近些年,深度学习领域的卷积神经网络(CNNs或ConvNets)在各行各业为我们解决了大量的实际问题。但是对于大多数人来说,CNN仿佛戴上了神秘的面纱。我经常会想,要是能将神经网络的过程分解,看一看...
  • And_w
  • And_w
  • 2017年04月21日 18:52
  • 1827

卷积神经网络CNN:Tensorflow实现(以及对卷积特征的可视化)

本文主要是实现了一个简单的卷积神经网络,并对卷积过程中的提取特征进行了可视化. 卷积神经网络最早是为了解决图像识别的问题,现在也用在时间序列数据和文本数据处理当中,卷积神经网络对于数据特征的...
  • u014281392
  • u014281392
  • 2017年07月04日 13:51
  • 5124

keras的使用流程

前文了解了keras的重要模块后,我们就可以使用keras了:1、构造数据np.array两个矩阵作为训练集,一个是数据矩阵,一个是标签矩阵,我们举个例子data=np.random.random((...
  • lk7688535
  • lk7688535
  • 2016年10月20日 17:27
  • 11172

python keras (一个超好用的神经网络框架)的使用以及实例

先吐槽一下这个基于theano的keras有多难装,反正我是在windows下折腾到不行,所以自己装了一个双系统。这才感到linux系统的强大之初,难怪大公司都是用这个做开发,妹的,谁用谁知道啊!!!...
  • Star_Bob
  • Star_Bob
  • 2015年09月20日 17:18
  • 69189

Deep Learning with Keras

  • 2017年09月24日 00:08
  • 20.09MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
举报原因:
原因补充:

(最多只允许输入30个字)