利用keras 实现cnn模型,关键在于:
(1)原始数据的处理。(可输入的格式)
(2)卷积层、池化层、全连接层的搭建
(3)各层对输入数据的size变化。

1.库的导入


np_utils库中的功能,应该就是对label进行one-hot处理一类的操作。

from models import Sequential 是keras搭建模型的一种框架,Sequential是一系列网络层按顺序构成的栈。
将一些网络层通过.add()堆叠起来,就构成了一个模型。

from models.layers import dense, activation, convolution2D, maxpooling2d, flatten 是导入的模型中的各个网络层。

dense:全连接神经网络层;
activation:激活函数;
convolution2D:卷积层
maxpooling2D:池化层
Flatten:用于数据的多维转换为一维,实现卷积层到全连接层的转换。

optimizer是模型的优化器,不同的优化器主要是在对学习率上的处理有所不同。

2.输入数据的处理

训练集的输入格式是600002828,是指一共60000个样本,每个样本是2828的像素图。由于数据是黑白数据,因此没有RGB的维度。

因为CNN模型的标准格式是出入长
宽*高,高其实就是图像的颜色,改数据中没有高这一维度,所以要通过reshape增加一个维度。
缺少RGB的维度,因此在原数据的样本数之后添加了色彩维度,由于是黑白图片,该维度为1。其实就是高度为1。
除以255,是为了归一化。其实还有其他的方法,进行归一化。

3.模型搭建

model=Sequential()就是使用keras框架的方便之处,通过add的方式将网络的各个层加起来,后面只需针对各个层进行设计,最终通过add构建模型。

第一个卷积层:
卷积层中最重要的就是滤波器(filter),通过使用filter对原始数据进行特征提取。所以在卷积层中,就是对filter设计,分别有个数,尺寸,和padding。一般filter的尺寸为33或者55。个数由少到多,成倍增加。
该案例中,filter的个数为32,尺寸为5*5。

激活函数
卷积层后添加激活函数。激活函数有很多种,包括sigmoid,tanh。。。

池化层

池化层主要对卷积层提取的数据进行特征简化,其中包括最大池化,和平均池化。经过一次池化,原本的数据尺寸长宽都会减少一半。本案例中,经过第一次池化,长宽由2828变为1414。

第二层卷积层、激活函数、池化层。


铺平

特征提取之后,需要输入全连接层。但是,由于卷积之后的得到是多维图像(由于多个filter,有多少个filter就有多少个图片),无法直接输出至全连接层dense,因此中间需要flatten将得到的多个特征图进行铺平。

全连接层

最后通过全连接层对提取的特征进行一个特征降维吧,然后输出类别个数。

优化器

最后将优化器定义,其实就是定义学习率。

模型编译

设计模型的损失函数,该案例的损失函数为categorical_crossentropy(交叉熵损失函数),多分类中就是用交叉熵损失函数。

keras实现cnn模型代码相关推荐

  1. 【AI易操作-深度学习算法代码解读】基于keras实现图像识别CNN模型-含CNN卷积神经网络模型原理

    图像识别为什么要用卷积神经网络CNN?比传统神经网络好在哪里? 核心差别点:多了卷积层+池化层,所以本文主要是梳理卷积层和池化层设计原理+CNN模型实现(基于Keras代码) 传统神经网络的劣势 我们 ...

  2. Python搭建Keras CNN模型破解网站验证码

    在本项目中,将会用Keras来搭建一个稍微复杂的CNN模型来破解以上的验证码.验证码如下: 利用Keras可以快速方便地搭建CNN模型,本项目搭建的CNN模型如下: 将数据集分为训练集和测试集,占比为 ...

  3. 教你用Keras和CNN建立模型识别神奇宝贝!(附代码)

    作者:ADRIAN ROSEBROCK 翻译:张恬钰 校对:万文菁 本文8500字,建议阅读30+分钟. 本文将讲解如何用Keras和卷积神经网络(CNN)来建立模型识别神奇宝贝! 用Keras创造一 ...

  4. 深度学习初学者使用Keras构建和部署CNN模型

    https://www.toutiao.com/a6666072496283845134/ 如果你在黑框中画一个图形.您应该从模型中得到一个预测. 恭喜!您已构建并部署了第一个CNN模型.继续尝试写出 ...

  5. Keras【Deep Learning With Python】更优模型探索Keras实现CNN

    文章目录 CNN 1.CNN介绍 2.CNN基本原理 代码实现 手写数字复杂网络层抽特征可视化工具http://scs.ryerson.ca/~aharley/vis/conv/ CNN 1.CNN介 ...

  6. keras入门(三)搭建CNN模型破解网站验证码

    项目介绍   在文章CNN大战验证码中,我们利用TensorFlow搭建了简单的CNN模型来破解某个网站的验证码.验证码如下: 在本文中,我们将会用Keras来搭建一个稍微复杂的CNN模型来破解以上的 ...

  7. CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下

    CV:基于Keras利用CNN主流架构之mini_XCEPTION训练性别分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 from keras.callbacks ...

  8. CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下

    CV:基于Keras利用CNN主流架构之mini_XCEPTION训练情感分类模型hdf5并保存到指定文件夹下 目录 图示过程 核心代码 图示过程 核心代码 def mini_XCEPTION(inp ...

  9. 超干货|使用Keras和CNN构建分类器(内含代码和讲解)

    摘要: 为了让文章不那么枯燥,我构建了一个精灵图鉴数据集(Pokedex)这都是一些受欢迎的精灵图.我们在已经准备好的图像数据集上,使用Keras库训练一个卷积神经网络(CNN). 为了让文章不那么枯 ...

最新文章

  1. P1865 A % B Problem (素数筛法,前缀和)
  2. 车牌识别python实现ubuntu_python利用百度云接口实现车牌识别
  3. 美术师关于自己的报酬与工作的看法
  4. c语言中图像处理相关函数,C语言图像处理函数大全
  5. python命名时可以使用中文吗_Python命名约定
  6. 接口测试-jmeter
  7. matlab与无网格,无网格法
  8. Protel常用封装库
  9. 曲线运动与万有引力公式_高中物理公式大全!
  10. 儒豹公布09年7月手机搜索热门关键词排行榜
  11. tinymce 上传本地视频
  12. 全球虚拟化服务器排行榜,全球云服务器厂商排名
  13. ARTS打卡10-抓住海森堡Bug
  14. 台湾大学 李宏毅教授的个人主页
  15. muParser公式库使用简介
  16. phpspreadsheet常用设置项
  17. 阻塞队列(二):PriorityBlockingQueue
  18. Lambda使用指北(上)
  19. python爬虫-Handler处理器的基本使用
  20. 算法导论------递归算法的时间复杂度求解

热门文章

  1. 做生意,要想做大做强,需拥有果断的魄力,忌优柔寡断
  2. Html特殊标记符号
  3. PhysX学习笔记2 -cloth系统3d模型的导入
  4. SGU 102(欧拉函数)
  5. 计算机网络英文介绍,《计算机网络英文版》.doc
  6. 原油价格涨幅与什么有关
  7. 数据结构4种逻辑关系,get到你就是强者!!!!
  8. 关于UE4使用中虚幻商城保管库的目录问题
  9. 服务器数据盘与系统盘做raid,服务器做Raid盘阵列和Raid磁盘阵列区别和优势
  10. n行Python代码系列:两行代码调整视频播放速度