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

上一篇文章总结了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

时间: 2024-11-05 18:33:41

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

Ubuntu 搭建深度学习框架 keras

深度学习框架Keras是基于Tensorflow的所以,安装keras需要安装Tensorflow: 1. 安装教程主要参考于两个博客的教程: https://www.cnblogs.com/HSLoveZL/archive/2017/10/27/7742606.html https://www.jianshu.com/p/5b708817f5d8?from=groupmessage 2. 本教程开始: Ubuntu安装的教程就略过了,直接从深度学习所需的环境的搭建开始说起 (需要说明的是,之所

DeepLearning tutorial(6)易用的深度学习框架Keras简介

之前我一直在使用Theano,前面五篇Deeplearning相关的文章也是学习Theano的一些笔记,当时已经觉得Theano用起来略显麻烦,有时想实现一个新的结构,就要花很多时间去编程,所以想过将代码模块化,方便重复使用,但因为实在太忙没有时间去做.最近发现了一个叫做Keras的框架,跟我的想法不谋而合,用起来特别简单,适合快速开发.(其实还有很多其他的深度学习框架都是比较容易用的.) 1. Keras简介 Keras是基于Theano的一个深度学习框架,它的设计参考了Torch,用Pyth

深度学习框架Keras安装

本文主要参考:https://blog.csdn.net/qingzhuochenfu/article/details/51187603 前提:Keras是Python语言中基于原始深度学习框架Tensorflow或Theano的封装框架.如果准备使用Keras首先必须准备安装Tensorflow或Theano,我安装的是TensorFlow CPU版本. 在cmd窗口下输入:pip install keras  即可,如下图, 安装后可测试一下是否安装成功,在命令行中输入python,再输入如

深度学习框架keras平台搭建(关键字:windows、非GPU、离线安装)

当下,人工智能越来越受到人们的关注,而这很大程度上都归功于深度学习的迅猛发展.人工智能和不同产业之间的成功跨界对传统产业产生着深刻的影响. 最近,我也开始不断接触深度学习,之前也看了很多文章介绍,对深度学习的历史发展以及相关理论知识也有大致了解. 但常言道:纸上得来终觉浅,绝知此事要躬行:与其临渊羡鱼,不如退而结网.因此决定自己动手玩一玩. 对比了当下众多流行框架的优缺点,以及结合自身硬件条件,最后选定keras框架作为入手点. 作为大多数人都习惯于Windows系统,此外由于GPU比较昂贵,本

深度学习框架Keras介绍及实战

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行.Keras 的开发重点是支持快速的实验.能够以最小的时延把你的想法转换为实验结果,是做好研究的关键. 本文以Kaggle上的项目:IMDB影评情感分析为例,学习如何用Keras搭建一个神经网络,处理实际问题.阅读本文需要对神经网络有基础的了解. 文章分为两个部分: Keras中的一些基本概念.Api用法.我会给出一些简单的使用样例,或是给出相关知识链接.

深度学习框架哪家强:TensorFlow?Caffe?MXNet?Keras?PyTorch?

深度学习框架哪家强:TensorFlow?Caffe?MXNet?Keras?PyTorch?对于这几大框架在运行各项深度任务时的性能差异如何,各位读者不免会有所好奇. 微软数据科学家Ilia Karmanov最新测试的结果显示,亚马逊MXNet在CNN.RNN与NLP情感分析任务上性能强劲,而TensorFlow仅擅长于特征提取. 测试详情更新在Ilia Karmanov的GitHub项目DeepLearningFrameworks(https://github.com/ilkarman/De

主流深度学习框架对比

深度学习研究的热潮持续高涨,各种开源深度学习框架也层出不穷,其中包括TensorFlow.Caffe.Keras.CNTK.Torch7.MXNet.Leaf.Theano.DeepLearning4.Lasagne.Neon,等等.然而TensorFlow却杀出重围,在关注度和用户数上都占据绝对优势,大有一统江湖之势.表2-1所示为各个开源框架在GitHub上的数据统计(数据统计于2017年1月3日),可以看到TensorFlow在star数量.fork数量.contributor数量这三个数

TensorFlow【机器学习】:如何正确的掌握Google深度学习框架TensorFlow(第二代分布式机器学习系统)?

本文标签:   机器学习 TensorFlow Google深度学习框架 分布式机器学习 唐源 VGG REST   服务器 自 2015 年底开源到如今更快.更灵活.更方便的 1.0 版本正式发布,由 Google 推出的第二代分布式机器学习系统 TensorFlow一直在为我们带来惊喜,一方面是技术层面持续的迭代演进,从分布式版本.服务框架 TensorFlow Serving.上层封装 TF.Learn 到 Windows 支持.JIT 编译器 XLA.动态计算图框架 Fold 等,以及

一线开发者在Reddit上讨论深度学习框架:PyTorch和TensorFlow到底哪个更好?

本文标签:   机器学习 TensorFlow Google深度学习框架 分布式机器学习 PyTorch   近日,Reddit用户 cjmcmurtrie 发了一个主题为「PyTorch vs. TensorFlow」的讨论帖,想要了解这两大流行的框架之间各自有什么优势. 原帖地址:https://redd.it/5w3q74 帖子一楼写道: 我还没有从 Torch7 迁移到 TensorFlow.我玩过 TensorFlow,但我发现 Torch7 更加直观(也许是我玩得不够?).我也尝试了