keras—神经网络CNN—MNIST手写数字识别
- from keras.datasets import mnist
- from keras.utils import np_utils
- from plot_image_1 import plot_image_1
- from plot_prediction_1 import plot_image_labels_prediction_1
- from show_train_history import show_train_history
- import numpy as np
- import pandas as pd
- from keras.models import Sequential
- from keras.layers import Dense,Dropout,Flatten,Conv2D,MaxPooling2D
- np.random.seed()
- (x_Train,y_Train),(x_Test,y_Test)=mnist.load_data()
- print('train data=',len(x_Train))
- print('test data=',len(x_Test))
- print('x_train_image:',x_Train.shape)
- print('y_train_label:',y_Train.shape)
- x_Train4D=x_Train.reshape(x_Train.shape[],,,).astype('float32')
- x_Test4D=x_Test.reshape(x_Test.shape[],,,).astype('float32')
- x_Train4D_normalize=x_Train4D/
- x_Test4D_normalize=x_Test4D/
- y_TrainOneHot=np_utils.to_categorical(y_Train)
- y_TestOneHot=np_utils.to_categorical(y_Test)
- model=Sequential()
- model.add(Conv2D(filters=,
- kernel_size=(,),
- padding='same',
- input_shape=(,,),
- activation='relu'))
- model.add(MaxPooling2D(pool_size=(,)))
- model.add(Conv2D(filters=,
- kernel_size=(,),
- padding='same',
- activation='relu'))
- model.add(MaxPooling2D(pool_size=(,)))
- model.add(Dropout(0.25))
- model.add(Flatten())
- model.add(Dense(,activation='relu'))
- model.add(Dropout(0.5))
- model.add(Dense(,activation='softmax'))
- print(model.summary())
- model.compile(loss='categorical_crossentropy',
- optimizer='adam',metrics=['accuracy'])
- train_history=model.fit(x=x_Train4D_normalize,
- y=y_TrainOneHot,validation_split=0.2,
- epochs=,batch_size=,verbose=)
- show_train_history(train_history,'acc','val_acc')
- show_train_history(train_history,'loss','val_loss')
- scores=model.evaluate(x_Test4D_normalize,y_TestOneHot)
- print()
- print('accuracy',scores[])
- prediction=model.predict_classes(x_Test4D_normalize)
- print("prediction[:10]",prediction[:])
- plot_image_labels_prediction_1(x_Test,y_Test,prediction,idx=)
- pd.crosstab(y_Test,prediction,rownames=['label'],colnames=['predict'])
- import matplotlib.pyplot as plt
- def plot_image_1(image):
- fig=plt.gcf()
- fig.set_size_inches(,)
- plt.imshow(image,cmap='binary')
- plt.show()
- import matplotlib.pyplot as plt
- def plot_image_labels_prediction_1(image,labels,prediction,idx,num=):
- fig=plt.gcf()
- fig.set_size_inches(,)
- if num>:num=
- for i in range(,num):
- ax=plt.subplot(,,i+)
- ax.imshow(image[idx],cmap='binary')
- title="label="+str(labels[idx])
- if len(prediction)>:
- title+=",predict="+str(prediction[idx])
- ax.set_title(title,fontsize=)
- ax.set_xticks([]);ax.set_yticks([])
- idx+=
- plt.show()
- import matplotlib.pyplot as plt
- def show_train_history(train_history,train,validation):
- plt.plot(train_history.history[train])
- plt.plot(train_history.history[validation])
- plt.title('Train History')
- plt.ylabel(train)
- plt.xlabel('Epoch')
- plt.legend(['train','validation'],loc='upper left') #显示左上角标签
- plt.show()
keras—神经网络CNN—MNIST手写数字识别的更多相关文章
- Android+TensorFlow+CNN+MNIST 手写数字识别实现
Android+TensorFlow+CNN+MNIST 手写数字识别实现 SkySeraph 2018 Email:skyseraph00#163.com 更多精彩请直接访问SkySeraph个人站 ...
- Pytorch1.0入门实战一:LeNet神经网络实现 MNIST手写数字识别
记得第一次接触手写数字识别数据集还在学习TensorFlow,各种sess.run(),头都绕晕了.自从接触pytorch以来,一直想写点什么.曾经在2017年5月,Andrej Karpathy发表 ...
- 第三节,CNN案例-mnist手写数字识别
卷积:神经网络不再是对每个像素做处理,而是对一小块区域的处理,这种做法加强了图像信息的连续性,使得神经网络看到的是一个图像,而非一个点,同时也加深了神经网络对图像的理解,卷积神经网络有一个批量过滤器, ...
- 【TensorFlow-windows】(四) CNN(卷积神经网络)进行手写数字识别(mnist)
主要内容: 1.基于CNN的mnist手写数字识别(详细代码注释) 2.该实现中的函数总结 平台: 1.windows 10 64位 2.Anaconda3-4.2.0-Windows-x86_64. ...
- [Python]基于CNN的MNIST手写数字识别
目录 一.背景介绍 1.1 卷积神经网络 1.2 深度学习框架 1.3 MNIST 数据集 二.方法和原理 2.1 部署网络模型 (1)权重初始化 (2)卷积和池化 (3)搭建卷积层1 (4)搭建卷积 ...
- keras框架的MLP手写数字识别MNIST,梳理?
keras框架的MLP手写数字识别MNIST 代码: # coding: utf-8 # In[1]: import numpy as np import pandas as pd from kera ...
- mnist手写数字识别——深度学习入门项目(tensorflow+keras+Sequential模型)
前言 今天记录一下深度学习的另外一个入门项目——<mnist数据集手写数字识别>,这是一个入门必备的学习案例,主要使用了tensorflow下的keras网络结构的Sequential模型 ...
- 第三节,TensorFlow 使用CNN实现手写数字识别(卷积函数tf.nn.convd介绍)
上一节,我们已经讲解了使用全连接网络实现手写数字识别,其正确率大概能达到98%,这一节我们使用卷积神经网络来实现手写数字识别, 其准确率可以超过99%,程序主要包括以下几块内容 [1]: 导入数据,即 ...
- 基于tensorflow的MNIST手写数字识别(二)--入门篇
http://www.jianshu.com/p/4195577585e6 基于tensorflow的MNIST手写字识别(一)--白话卷积神经网络模型 基于tensorflow的MNIST手写数字识 ...
随机推荐
- Oracle学习操作(7)用户、权限、角色
一.oracle用户: 二.权限 1.系统权限: sys登陆创建c##test用户后,给用户c##test授权,并且带有传播性: SQL> create user c##test identif ...
- 廖雪峰Java1-1Java入门-java简介
Java特点: 一种面向对象的跨平台变成语言 以字节码方式运行在虚拟机上 自带功能齐全的类库 非常活跃的开源社区支持 Java优点: 简单.健壮.安全 跨平台,一次编写,到处运行 高度优化的虚拟机 J ...
- 【Gearman学习笔记】分布式处理入门
1.首先,确保你已经安装了gearmand环境并且语言绑定(language binding)已经生效. 2.涉及到的各个部分: ServerThe server, gearmand, will co ...
- 让“懒惰” Linux 运维工程师事半功倍的 10 个关键技巧!
好的Linux运维工程师区分在效率上.如果一位高效的Linux运维工程师能在 10 分钟内完成一件他人需要 2 个小时才能完成的任务,那么他应该受到奖励(得到更多报酬),因为他为公司节约了时间,而时间 ...
- express基础
express框架 const express = require("express"); 引入express框架 var app= express(); 实例化 相当于构造函 ...
- python(十二)下:ORM框架SQLAlchemy使用学习
此出处:http://blog.csdn.net/fgf00/article/details/52949973 本节内容 ORM介绍 sqlalchemy安装 sqlalchemy基本使用 多外键关联 ...
- Spring中的ThreadPoolTaskExecutor
在观察线上系统的运行情况下,发现在错误日志中有这类错误信息,org.springframework.core.task.TaskRejectedException,于是便对ThreadPoolTa ...
- 知识picture
- thinkphp5隐藏apache下的index.php
在应用入口文件同级目录添加.htaccess文件,内容如下: <IfModule mod_rewrite.c> Options +FollowSymlinks -Multiviews Re ...
- linux更新系统
1.linux更新系统 https://www.jb51.net/os/RedHat/450223.html 仅更新系统,不更新内核 yum -y --exclude=kernel\* upgrade ...