[机器学习] keras:MNIST手写数字体识别(DeepLearning 的 HelloWord程序)
深度学习界的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程序)的更多相关文章
- 【Keras篇】---Keras初始,两种模型构造方法,利用keras实现手写数字体识别
一.前述 Keras 适合快速体验 ,keras的设计是把大量内部运算都隐藏了,用户始终可以用theano或tensorflow的语句来写扩展功能并和keras结合使用. 二.安装 Pip insta ...
- 李宏毅 Keras手写数字集识别(优化篇)
在之前的一章中我们讲到的keras手写数字集的识别中,所使用的loss function为‘mse’,即均方差.那我们如何才能知道所得出的结果是不是overfitting?我们通过运行结果中的trai ...
- 将Mnist手写数字库转化为图片形式 和标签形式
Mnist 数据文件有两种,一种是图片文件,一种是标签文件,那么如何把他们解析出来呢? (1)解析图片文件 可以看出在train-images.idx3-ubyte中,第一个数为32位的整数(魔数,图 ...
- TensorFlow系列专题(六):实战项目Mnist手写数据集识别
欢迎大家关注我们的网站和系列教程:http://panchuang.net/ ,学习更多的机器学习.深度学习的知识! 目录: 导读 MNIST数据集 数据处理 单层隐藏层神经网络的实现 多层隐藏层神经 ...
- 深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识
深度学习-tensorflow学习笔记(1)-MNIST手写字体识别预备知识 在tf第一个例子的时候需要很多预备知识. tf基本知识 香农熵 交叉熵代价函数cross-entropy 卷积神经网络 s ...
- mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)
前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...
- 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别
深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...
- 如何用卷积神经网络CNN识别手写数字集?
前几天用CNN识别手写数字集,后来看到kaggle上有一个比赛是识别手写数字集的,已经进行了一年多了,目前有1179个有效提交,最高的是100%,我做了一下,用keras做的,一开始用最简单的MLP, ...
- tensorflow笔记(四)之MNIST手写识别系列一
tensorflow笔记(四)之MNIST手写识别系列一 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7436310.html ...
随机推荐
- redis入门指南(三)—— 事务、过期时间、SORT命令、消息通知与管道
写在前面 学习<redis入门指南>笔记,结合实践,只记录重要,明确,属于新知的相关内容. 事务 1.redis中的事务由一组命令的集合组成,要么都执行,要么都不执行,同时redis的事务 ...
- Visual SVN Server+TortoiseSVN进行源代码管理
安装VisualSVN Server 安装完之后,可配置SVN Server的IP地址,右键下图红色部分,选择属性,然后可配置ServeName和IP Address 之后可以创建用户.用户组和项目库 ...
- oop的三种设计模式(单例、工厂、策略)
参考网站 单例模式: 废话不多说,我们直接上代码: <?php /** 三私一公 *私有的静态属性:保存类的单例 *私有的__construct():阻止在类的外部实例化 *私有的__clone ...
- Ethical Hacking - GAINING ACCESS(20)
CLIENT SIDE ATTACKS - Spoofing backdoor extension Change the extension of the trojan from exe to a s ...
- python pytest接口自动化框架搭建(一)
1.首先安装pytest pip install pytest 2.编写单测用例 在pytest框架中,有如下约束: 所有的单测文件名都需要满足test_*.py格式或*_test.py格式. 在单测 ...
- awesome : vue-awesome 按需引入
其实挺简单的,被文档带到沟里去了. main.js: 首先讲一下全部引入,很简单. import 'vue-awesome/icons' import Icon from 'vue-awesome/c ...
- abp vnext 开发快速入门 1 认识框架
最近在做一个项目,用的框架是Abp vnext ,不是Abp, 我自己也是刚开始用这个框架来做项目,难免要查资料,这个框架官方有中文文档,可以到官网www.abp.io 去查看,国内也有一些写了相关的 ...
- 题解 CF785E 【Anton and Permutation】
考虑用分块解决这个题,一次交换对当前逆序对个数的影响是,加上两倍的在区间\([l+1,r-1]\)中比\(a_r\)小的元素个数,减去两倍的在区间\([l+1,r-1]\)中比\(a_l\)小的元素个 ...
- java 多线程的售票问题
java 多线程的售票问题 对票的库存进行操作 public class Tickets implements Runnable{ private int ticket = 100; public v ...
- .Net Core缓存组件(MemoryCache)【缓存篇(二)】
一.前言 .Net Core缓存源码 1.上篇.NET Core ResponseCache[缓存篇(一)]中我们提到了使用客户端缓存.和服务端缓存.本文我们介绍MemoryCache缓存组件,说到服 ...