深度学习界的Hello Word程序:MNIST手写数字体识别

learn from(仍然是李宏毅老师《机器学习》课程):http://speech.ee.ntu.edu.tw/~tlkagk/courses_ML17_2.html

import numpy as np
from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.layers import Conv2D, MaxPooling2D, Flatten
from keras.optimizers import SGD, Adam
from keras.utils import np_utils
from keras.datasets import mnist #定义数据加载、预处理函数
def load_data():
(x_train, y_train), (x_test, y_test) = mnist.load_data()
number = 10000
x_train = x_train[0:number]
y_train = y_train[0:number]
x_train = x_train.reshape(number, 28*28)
x_test = x_test.reshape(x_test.shape[0], 28*28)
x_train = x_train.astype('float32')
x_test = x_test.astype('float32')
#keras.utils.to_categorical(y, num_classes=None, dtype='float32')
#自动处理成one-hot的numpy数组。y为标签数据,num_classes是一共有几类)
y_train = np_utils.to_categorical(y_train, 10)
y_test = np_utils.to_categorical(y_test, 10) x_train = x_train/255 #图像数据预处理 标准化
x_test = x_test/255
return (x_train, y_train), (x_test, y_test) (x_train, y_train), (x_test, y_test) = load_data() #搭建网络
model = Sequential()
model.add(Dense(input_dim=28*28, units=689, activation='relu'))
model.add(Dense(units=689, activation='relu'))
model.add(Dense(units=10, activation='softmax'))
model.compile(loss='categorical_crossentropy',optimizer=SGD(lr=0.1),metrics=['accuracy'])
#训练走起!
model.fit(x_train, y_train, batch_size=50, epochs=20)
#看train出模型在test data上的表现如何
result = model.evaluate(x_test,y_test)
print('Test Acc:',result[1])

训练量很小,我们就不切GPU训了。效果:

Using TensorFlow backend.
Epoch 1/20
10000/10000 [==============================] - 2s 166us/step - loss: 0.5926 - acc: 0.8301
Epoch 2/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.2686 - acc: 0.9234
Epoch 3/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.2015 - acc: 0.9407
Epoch 4/20
10000/10000 [==============================] - 1s 106us/step - loss: 0.1546 - acc: 0.9568
Epoch 5/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.1238 - acc: 0.9645
Epoch 6/20
10000/10000 [==============================] - 1s 106us/step - loss: 0.0977 - acc: 0.9744
Epoch 7/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0808 - acc: 0.9790
Epoch 8/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0638 - acc: 0.9838
Epoch 9/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0514 - acc: 0.9875
Epoch 10/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0424 - acc: 0.9905
Epoch 11/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0331 - acc: 0.9936
Epoch 12/20
10000/10000 [==============================] - 1s 108us/step - loss: 0.0267 - acc: 0.9960
Epoch 13/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0209 - acc: 0.9972
Epoch 14/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0177 - acc: 0.9977
Epoch 15/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0144 - acc: 0.9986
Epoch 16/20
10000/10000 [==============================] - 1s 106us/step - loss: 0.0115 - acc: 0.9993
Epoch 17/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0102 - acc: 0.9994
Epoch 18/20
10000/10000 [==============================] - 1s 106us/step - loss: 0.0084 - acc: 0.9997
Epoch 19/20
10000/10000 [==============================] - 1s 106us/step - loss: 0.0071 - acc: 0.9998
Epoch 20/20
10000/10000 [==============================] - 1s 107us/step - loss: 0.0064 - acc: 0.9999
10000/10000 [==============================] - 0s 38us/step
Test Acc: 0.9573

[机器学习] keras:MNIST手写数字体识别(DeepLearning 的 HelloWord程序)的更多相关文章

  1. 【Keras篇】---Keras初始,两种模型构造方法,利用keras实现手写数字体识别

    一.前述 Keras 适合快速体验 ,keras的设计是把大量内部运算都隐藏了,用户始终可以用theano或tensorflow的语句来写扩展功能并和keras结合使用. 二.安装 Pip insta ...

  2. 李宏毅 Keras手写数字集识别(优化篇)

    在之前的一章中我们讲到的keras手写数字集的识别中,所使用的loss function为‘mse’,即均方差.那我们如何才能知道所得出的结果是不是overfitting?我们通过运行结果中的trai ...

  3. 将Mnist手写数字库转化为图片形式 和标签形式

    Mnist 数据文件有两种,一种是图片文件,一种是标签文件,那么如何把他们解析出来呢? (1)解析图片文件 可以看出在train-images.idx3-ubyte中,第一个数为32位的整数(魔数,图 ...

  4. TensorFlow系列专题(六):实战项目Mnist手写数据集识别

    欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 导读 MNIST数据集 数据处理 单层隐藏层神经网络的实现 多层隐藏层神经 ...

  5. 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识

    深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...

  6. mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)

    前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...

  7. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  8. 如何用卷积神经网络CNN识别手写数字集?

    前几天用CNN识别手写数字集,后来看到kaggle上有一个比赛是识别手写数字集的,已经进行了一年多了,目前有1179个有效提交,最高的是100%,我做了一下,用keras做的,一开始用最简单的MLP, ...

  9. tensorflow笔记(四)之MNIST手写识别系列一

    tensorflow笔记(四)之MNIST手写识别系列一 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7436310.html ...

随机推荐

  1. 开源利器分享:BitBar 坐看今天你的项目涨了多少 star

    今天开头我想叨叨几句,我个人最近的感受.在这个信息爆炸,互联网的时代里.我的周遭总是充斥者着各种让人能产生焦虑的信息, 我不知道有没有小伙伴和我一样,看到各种神通广大.游戏人生的大侠,低头看看自己当前 ...

  2. Dynamics CRM Audit Performance Troubleshooting

    记一次Dynamics CRM Audit 查询失败的问题. 客户环境现象:由于业务逻辑需要使用RetrieveAuditDetailRequest API查询相关Record的详细更改信息.但查询过 ...

  3. JavaWeb基础(day14_css)

    css css样式种类 内部样式 在head标签中使用 <style>标签 行内样式 直接在标签中写style属性进行赋值,style属性的就相当于内部样式的{} 外部样式 单独写一个文件 ...

  4. SpringBoot 接收前端参数的几种方式

    昨天和前端小伙伴在联调是碰到了参数接收不到的错误,我在postman上测试接口是正常的,但是与前端对接时就接受不到参数,请求方式都是get,但是问题就在于json  和 form-data 的区别!这 ...

  5. JavaScript以万或亿为单位显示,并保留两位小数或取整

    //单位:万 n = 814308678.00; n = Math.floor((n /10000) * 100) / 100; //保留小数点两位 //n = parseInt((n /10000) ...

  6. 设计模式:abstract factory模式

    含义:抽象工厂将“抽象零件”组装成“抽象产品” 理解:相比于工厂方法模式,可以根据不同的接口创建不同的产品,说白了就是将一个接口变成两个接口,各自返回不同的抽象产品 例子: class Car //抽 ...

  7. 记一次抓包和破解App接口

    目录 第一章 · 起源 第二章 · 尝试 第三章 · 脱狱 第四章 · 柳暗花明 第五章 · 终结 第一章 · 起源 某日,想做个爬虫工具,爬某个网站上的数据已做实验之用.大家都知道爬pc网页上的数据 ...

  8. 在CentOS下安装两个Tomcat

    在CentOS下安装两个Tomcat [版权声明:本文为博主原创文章,转载请说明出处.希望能和大家共同学习] 1.不同的tomcat启动和关闭监听不同的端口 2.不同的tomcat的启动文件start ...

  9. 使用expect在script中切换到root用户(精华)

    使用expect在script中切换到root用户 1.尚观版本 http://www.uplook.cn/biancheng/133/1335040/ 1 a. 命令行: /usr/bin/expe ...

  10. 使用Faker库生成模拟数据

    一.相关文档 该库在laravel框架中默认已经存在,无需手动进行安装.使用参考文档: https://packagist.org/packages/fzaninotto/faker 二.简单示例 & ...