卷积神经网络文字手写字MNIST识别模型

环境配置

  1. 安装Tensorflow以及keras,要注意的是tensorflow和keras的版本要对应
    pip install tensorflow=1.13.1,
    pip install keras==2.2.4
  2. 导入所需要的包:
    import numpy as np
    import keras
    import matplotlib as plt
    from keras.datasets import mnist
    from keras.models import Squential
    from keras.layers import Dense,Dropout,Flatten,Activation
    from keras.layers import Conv2D,Maxpooling2D
    from keras import backend as k

MNIST数据集

MNIST数据集包含了70000张数字图片,其中60000张图片作为训练集,10000张图片作为测试集,尺寸大小为28281
在这里插入图片描述

MNIST数据集数据预处理

#载入数据,如果本地没有的话会自动从网上下载
(X_train,Y_train),(X_test,Y_test)=keras.datasets.mnist.load_data()
#把输入的数据整理成模型可以接受的格式
X_train=X_train.reshape(X_train.shape[0],28,28,1)
X_test=X_tset.reshape(X_test.shape[0],28,28,1)
#对输入进行归一化
X_train=X_train/255
X_test=X_test/255
#对输出进行one-hot-coding
Y_train=keras.utils.to_categorical(Y_train,10)
Y_test=keras.utils.to_categorical(Y_test,10)

模型的搭建

AlexNet网络模型结构

#AlexNet网络结构
model=keras.model.Sequential()
model.add(Conv2D(32,(3,3),input_shape=(28,28,1)))  #卷积算子大小为(3,3),共32层
model.add(Activation('relu'))                       #卷积层后面加入激活函数
model.add(Conv2D(32,(3,3))
model.add(Activation('relu'))
model.add(MaxPooling2D(pooling_size=(2,2)))         #池化层,池化层算子的大小为(2,2)
#全连接神经网络分类器
model.add(Flatten())
model.add(Dense(200))
model.add(Activation('relu'))
model.add(Dense(200))
model.add(Activation('relu'))
model.add(Dense(10,activation='softmax'))

定义模型的优化器

adam=keras.optimizers.Adam(lr=0.001,beta_1=0.9,beta_2=0.999,epsilon=1e-08)

model.compile(loss='categorical_crossentropy',optimizer=adam,metrics=['accuracy'])

模型的训练以及一些结果展示

#训练模型
model.fit(X_train,Y_train,batch_size=100,epochs=10,verbose=1,validation_data=(X_test,Y_test))
#展示训练的结果
test_index=2
plt.imshow(X_test([test_index,:,:,0))
output=model.predict(X_test[test_index,:,:,:].reshape(1,28,28,1)

模型的存储

model.save("你的路径")

#模型的载入
from keras.models import load_model
model=load_model("你的路径")
model.summary() #模型展示
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值