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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012162613/article/details/45581421

深度学习框架-Keras基础入门系列

-
  • 1970年01月01日 08:00

keras-vis可视化特征

提前下载:vgg16_weights_tf_dim_ordering_tf_kernels.h5 放在C:\Users\sbd01\.keras\models,改为自己电脑用户目录 Dow...
  • jacke121
  • jacke121
  • 2018-01-15 20:43:11
  • 620

Keras实现LeNet-5网络,并可视化网络结构图

Keras实现LeNet-5网络
  • qqadssp
  • qqadssp
  • 2017-04-22 13:23:12
  • 4205

Keras网络结构可视化工具

Keras的utils包里带了一个vis_utils组件(2.0.2版本),该组件应该就是早先版本的Keras当中的visualize_utils组件。利用该组件,可以很轻松地用一行代码,将已建立神经...
  • lyb3b3b
  • lyb3b3b
  • 2017-09-08 21:28:12
  • 1012

Keras中神经网络可视化模块keras.utils.visualize_util 的安装

Keras中提供了一个神经网络可视化的函数plot,并可以将可视化结果保存在本地。plot使用方法如下: [python] view plain copy  print? from...
  • lyb3b3b
  • lyb3b3b
  • 2017-07-05 20:37:57
  • 3075

Keras中文文档知识点整理

keras中文文档知识点总结
  • wanglitao588
  • wanglitao588
  • 2017-09-03 19:58:17
  • 402

keras 可视化图形功能

在使用keras 时出现错误:Failed to import pydot. You must install pydot and graphviz for `pydotprint` to work...
  • wchzh2015
  • wchzh2015
  • 2018-02-11 16:26:18
  • 73

windows 下Keras中神经网络可视化模块安装配置方法

这个模块安装的坑比较多,所以整理如下: 请按如下顺序安装: sudo pip install graphviz(安装接口) sudo apt-get install graphviz(安装软件本身...
  • huixingshao
  • huixingshao
  • 2017-05-02 14:31:13
  • 1352

Keras 可视化 model visualization

https://keras.io/visualization/ 系统: ubuntu16.04 前置条件: sudo apt-get install graphviz 依赖 pydot-ng ...
  • YAJUN0601
  • YAJUN0601
  • 2017-06-21 17:49:54
  • 1740

Keras实现卷积神经网络

在安装过Tensorflow后,在在安装Keras默认将TF作为后端,Keras实现卷积网络的代码十分简洁,而且keras中的callback类提供对模型训练过程中变量的检测方法,能够根据检测变量的情...
  • u014281392
  • u014281392
  • 2017-08-22 13:58:05
  • 2590
收藏助手
不良信息举报
您举报文章:DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
举报原因:
原因补充:

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