Keras 浅尝之MNIST手写数字识别

转载 2015年12月20日 17:50:06

最近关注了一阵Keras,感觉这个东西挺方便的,今天尝试了一下发现确实还挺方便。不但提供了常用的Layers、Normalization、Regularation、Activation等算法,甚至还包括了几个常用的数据库例如cifar-10和mnist等等。

下面的代码算是Keras的Helloworld吧!利用MLP实现的MNIST手写数字识别:

from keras.models import Sequential  
from keras.layers.core import Dense, Dropout, Activation  
from keras.optimizers import SGD  
from keras.datasets import mnist  
import numpy

model = Sequential()  
model.add(Dense(784, 500, init='glorot_uniform')) # 输入层,28*28=784  
model.add(Activation('tanh')) # 激活函数是tanh  
model.add(Dropout(0.5)) # 采用50%的dropout

model.add(Dense(500, 500, init='glorot_uniform')) # 隐层节点500个  
model.add(Activation('tanh'))  
model.add(Dropout(0.5))

model.add(Dense(500, 10, init='glorot_uniform')) # 输出结果是10个类别,所以维度是10  
model.add(Activation('softmax')) # 最后一层用softmax

sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True) # 设定学习率(lr)等参数  
model.compile(loss='categorical_crossentropy', optimizer=sgd, class_mode='categorical') # 使用交叉熵作为loss函数

(X_train, y_train), (X_test, y_test) = mnist.load_data() # 使用Keras自带的mnist工具读取数据(第一次需要联网)

X_train = X_train.reshape(X_train.shape[0], X_train.shape[1] * X_train.shape[2]) # 由于mist的输入数据维度是(num, 28, 28),这里需要把后面的维度直接拼起来变成784维  
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1] * X_test.shape[2])  
Y_train = (numpy.arange(10) == y_train[:, None]).astype(int) # 参考上一篇文章,这里需要把index转换成一个one hot的矩阵  
Y_test = (numpy.arange(10) == y_test[:, None]).astype(int)

# 开始训练,这里参数比较多。batch_size就是batch_size,nb_epoch就是最多迭代的次数, shuffle就是是否把数据随机打乱之后再进行训练
# verbose是屏显模式,官方这么说的:verbose: 0 for no logging to stdout, 1 for progress bar logging, 2 for one log line per epoch.
# 就是说0是不屏显,1是显示一个进度条,2是每个epoch都显示一行数据
# show_accuracy就是显示每次迭代后的正确率
# validation_split就是拿出百分之多少用来做交叉验证
model.fit(X_train, Y_train, batch_size=200, nb_epoch=100, shuffle=True, verbose=1, show_accuracy=True, validation_split=0.3)  
print 'test set'  
model.evaluate(X_test, Y_test, batch_size=200, show_accuracy=True, verbose=1)  

屏显输出了这么一大堆东西:

ssh://shibotian@***.***.***.***:22/usr/bin/python -u /usr/local/shared_dir/local/ipython_shibotian/shibotian/code/kreas_test1/run.py  
Using gpu device 0: Tesla K40m  
Train on 42000 samples, validate on 18000 samples  
Epoch 0  
0/42000 [==============================] - 1s - loss: 0.9894 - acc.: 0.7386 - val. loss: 0.4795 - val. acc.: 0.8807  
Epoch 1  
0/42000 [==============================] - 1s - loss: 0.5635 - acc.: 0.8360 - val. loss: 0.4084 - val. acc.: 0.8889

省略。。。。。

Epoch 98  
0/42000 [==============================] - 1s - loss: 0.2838 - acc.: 0.9116 - val. loss: 0.1872 - val. acc.: 0.9418  
Epoch 99  
0/42000 [==============================] - 1s - loss: 0.2740 - acc.: 0.9163 - val. loss: 0.1842 - val. acc.: 0.9434  
test set  
0/10000 [==============================] - 0s - loss: 0.1712 - acc.: 0.9480     

Process finished with exit code 0

P.S. verbose=1时候的进度条很可爱啊

 

Keras MNIST

安装Keras pip install keras 代码 '''Trains a simple convnet on the MNIST dataset. Gets to 99.25%...
  • chenhaifeng2016
  • chenhaifeng2016
  • 2017年05月25日 22:21
  • 1324

Keras 深度学习框架Python Example:CNN/mnist

Keras是基于Theano的一个深度学习框架,它的设计参考了Torch,用Python语言编写,是一个高度模块化的神经网络库,支持GPU和CPU。...
  • Eric_Wilson
  • Eric_Wilson
  • 2015年11月15日 15:39
  • 9968

用keras实验mnist数据

# -*- coding: utf-8 -*- """ Created on Mon Oct 30 19:44:02 2017@author: user """from __future__ impo...
  • capecape
  • capecape
  • 2017年10月30日 21:34
  • 423

Keras-2 Keras Mnist

Keras Mnist在这里,我们将利用Keras搭建一个深度学习网络对mnist数据集进行识别。 本文参考 keras-mnist-tutorial 整个代码分为三个部分: 数据准备 模型搭建 训...
  • weiwei9363
  • weiwei9363
  • 2017年11月18日 18:38
  • 224

[Keras实战] 构建LeNet实现手写数字识别(mnist数据集)

在写实际的代码前,我们先把所需要用到的一些库导入进来: from keras import backend as K from keras.models import Sequential from...
  • Kexiii
  • Kexiii
  • 2017年08月28日 20:45
  • 839

2.keras实现MNIST手写数字分类问题初次尝试(Python)

根据我上一篇文章下载完MNIST数据集后,下一步就是看看keras是如何对它进行分类的。 参考博客: http://blog.csdn.net/vs412237401/article/detail...
  • fuwenyan
  • fuwenyan
  • 2016年12月03日 21:31
  • 3427

使用keras对mnist数据集做分类

只贴代码: 原始数据集下载:http://yann.lecun.com/exdb/mnist/ 代码说明:http://keras.io/getting-started/sequential-m...
  • vs412237401
  • vs412237401
  • 2016年07月21日 15:42
  • 5968

深度學習 Keras MNIST 數據可視化

學習 "机器學習 (machine learning)" 或 "深度學習 (deep learning)" 的一个重要關鍵是 "可視化 (visualization)", "可視化" 可以用在資料上、...
  • rumblefish07724
  • rumblefish07724
  • 2016年12月24日 11:26
  • 827

Keras学习(二):MNIST_CNN实例细节

keras+mnist+cnn实例细节
  • yzh201612
  • yzh201612
  • 2017年04月06日 18:12
  • 2928

keras第一个例程mnist_mlp.py解读

装好keras后,马上运行了例程minst_mlp.py,哇好牛逼,准确率98.4%,但是并不知道自己干了啥。好吧,啃代码。 1. 开头就懵了,数据集在哪呐。 好,从这句入手,找到mnist....
  • NNNNNNNNNNNNY
  • NNNNNNNNNNNNY
  • 2016年10月19日 20:15
  • 4448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Keras 浅尝之MNIST手写数字识别
举报原因:
原因补充:

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