莫烦大大keras学习Mnist识别(3)-----CNN
一、步骤:
导入模块以及读取数据
数据预处理
构建模型
编译模型
训练模型
测试
二、代码:
导入模块以及读取数据
#导包
import numpy as np
np.random.seed(1337)
# from keras.datasets import mnist
from keras.utils import np_utils # 主要采用这个模块下的to_categorical函数,将该函数转成one_hot向量
from keras.models import Sequential #keras的模型模块
from keras.layers import Dense , Activation , Convolution2D, MaxPooling2D, Flatten #keras的层模块
from keras.optimizers import Adam #keras的优化器 #读取数据,因为本地已经下载好数据在绝对路径:E:\jupyter\TensorFlow\MNIST_data下,直接采用TensorFlow来读取
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('E:\jupyter\TensorFlow\MNIST_data',one_hot = True) X_train = mnist.train.images
Y_train = mnist.train.labels
X_test = mnist.test.images
Y_test = mnist.test.labels
2、数据预处理
x原本的shape为(55000,784),55000表示样本数量,784表示一个图像样本拉成一个向量的大小,故要将其转成28*28这种长×宽的形式。(-1,1,28,28)中的-1是之后batch_size的大小,即一次取batch大小的样本来训练,1,28,28表示高为1,长为28,宽为28。
#数据预处理
X_train = X_train.reshape(-1,1,28,28)
X_test = X_test.reshape(-1,1,28,28)
y_train = np_utils.to_categorical(Y_train,num_classes = 10)#to_categorical将标签转化成ont-hot
y_test = np_utils.to_categorical(Y_test,num_classes = 10)
3、构建模型
2个卷积层【包括卷积+激活relu+最大池化】+2个全连接层
#模型构建
model = Sequential() #建立一个序列模型 #在这个模型首层添加一个卷积层,一个卷积过滤器大小为5*5,32个过滤器,采用的padding模式是same,即通过补0使输入输出大小一下。首层要加一个输入大小(1,28,28)
model.add(Convolution2D(
nb_filter = 32,
nb_row = 5,
nb_col = 5,
border_mode = 'same',
input_shape = (1,28,28)
)) #接着加一个激活层
model.add(Activation('relu')) #接着加一个最大池化层,pool大小为(2,2),strides步长长移动2,宽移动2。padding采用same模式
model.add(MaxPooling2D(
pool_size = (2,2),
strides = (2,2),
border_mode = 'same',
)) #卷积层2
model.add(Convolution2D(64,5,5,border_mode = 'same')) #激活层2
model.add(Activation('relu')) #池化层2
model.add(MaxPooling2D(pool_size = (2,2),border_mode = 'same')) #进行全连接之前将矩阵展开成一个长向量
model.add(Flatten()) #全连接层1,大小有1024个参数
model.add(Dense(1024)) #激活层
model.add(Activation('relu')) #全连接层2,大小为10
model.add(Dense(10)) #输出层加一个softmax处理
model.add(Activation('softmax'))
4、编译模型:model.compile
采用model.compile来编译,函数内参数说明优化器optimizer、损失函数loss、评价标准metrics。
#编译模型
adam = Adam(lr = 1e-4)
model.compile(optimizer=adam,
loss = 'categorical_crossentropy',
metrics = ['accuracy'])
5、训练模型:model.fit
类似sklearn中的形式
model.fit(X_train,Y_train,nb_epoch = 20,batch_size = 32)
6、测试:model.evaluate
输出测试的损失和准确度
loss , acc = model.evaluate(X_test,y_test)
莫烦大大keras学习Mnist识别(3)-----CNN的更多相关文章
- 莫烦大大keras学习Mnist识别(4)-----RNN
一.步骤: 导入包以及读取数据 设置参数 数据预处理 构建模型 编译模型 训练以及测试模型 二.代码: 1.导入包以及读取数据 #导入包 import numpy as np np.random.se ...
- 莫烦大大keras的Mnist手写识别(5)----自编码
一.步骤: 导入包和读取数据 数据预处理 编码层和解码层的建立 + 构建模型 编译模型 训练模型 测试模型[只用编码层来画图] 二.代码: 1.导入包和读取数据 #导入相关的包 import nump ...
- 莫烦大大TensorFlow学习笔记(9)----可视化
一.Matplotlib[结果可视化] #import os #os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2' import tensorflow as tf i ...
- 莫烦python教程学习笔记——总结篇
一.机器学习算法分类: 监督学习:提供数据和数据分类标签.--分类.回归 非监督学习:只提供数据,不提供标签. 半监督学习 强化学习:尝试各种手段,自己去适应环境和规则.总结经验利用反馈,不断提高算法 ...
- 莫烦大大TensorFlow学习笔记(8)----优化器
一.TensorFlow中的优化器 tf.train.GradientDescentOptimizer:梯度下降算法 tf.train.AdadeltaOptimizer tf.train.Adagr ...
- 莫烦python教程学习笔记——保存模型、加载模型的两种方法
# View more python tutorials on my Youtube and Youku channel!!! # Youtube video tutorial: https://ww ...
- 莫烦python教程学习笔记——validation_curve用于调参
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦python教程学习笔记——learn_curve曲线用于过拟合问题
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 莫烦python教程学习笔记——利用交叉验证计算模型得分、选择模型参数
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
随机推荐
- thymeleaf模板引擎基础使用(转)
刚好项目上用到这个模板引擎,记录以下基础用法. thymeleaf介绍 简单说, Thymeleaf是一个跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP .相比其他的模板 ...
- Clojure:读取xml
在Clojure中读取XML是很容易的.比如我们有一个名叫strings.xml文件: <?xml version="1.0" encoding="utf-8&qu ...
- jQuery Validate 使用
jQuery Validate 使用 <script src="js/b/js/jquery.validate.js"></script> <styl ...
- Redis 3.0.0 正式版出炉,高性能 K/V 服务
Redis 3.0.0 正式版最终到来了,与 RC6 版本号比較.该版本号改进包含: * 修复了无磁盘的复制问题 (Oran Agra) * 在角色变化后对 BLPOP 复制进行測试 (Salvato ...
- C语言之文件操作07——读取文件数据并计算均值方差标准差
//文件 /* =============================================================== 题目:从文本文件"high.txt" ...
- poj 1664 放苹果 (划分数)
题意:中文题目,不解释... 题解: 第一种方法是暴力深搜:枚举盘子1~n放苹果数量的所有情况,不需要剪枝:将每次枚举的情况,即每个盘的苹果数量,以字典序排序,然后存进set里 以此去重像" ...
- Linux系统编程——特殊进程之僵尸进程
僵尸进程(Zombie Process) 进程已执行结束,但进程的占用的资源未被回收.这种进程称为僵尸进程. 在每一个进程退出的时候,内核释放该进程全部的资源.包含打开的文件.占用的内存等. 可是仍然 ...
- SuperSocketClientEngine
https://github.com/kerryjiang/SuperSocket.ClientEngine TcpClientSession的用法 https://github.com/kerryj ...
- PCB MS SQL 排序应用---相邻数据且相同合并处理
这是一个很有趣SQL数据处理应用,具体需求如下 ERP需要工程将物料编码相邻的编码合并求和BOM用量,巧妙的用到了已有排序号与分组排序号之间的差值求解 示例: 原数据: 要求转换: 实际转换后数据: ...
- E20170816-mk
deque 即双端队列.是一种具有队列和栈的性质的数据结构. revert vi. 恢复; 重提; 回到…上; <律>归还; n. 归属; 恢复原来信仰的人; Indicator ...