使用keras实现手写数字识别代码学习笔记

使用keras实现手写数字识别代码学习笔记

import keras from keras

import layers import matplotlib.pyplot as plt %matplotlib inline

import keras.datasets.mnist as mnist

(train_image,train_label),(test_image,test_label) = mnist.load_data() #下载国外手写数字数据集

train_image.shape # 打印训练图像的状态(输出六万张图片,而且每张图片是28*28的灰度图片)

plt.imshow(train_image[0]) #画出训练集中的第一张图片

train_label

train_label[1000]

test_image.shape,test_label.shape #查看测试集中图片的相关信息

model = keras.Sequential() #添加一个模型(该模型中支持cnn,rnn等)

model.add(layers.Flatten()) #第一层展平,变成60000个,28*28

model.add(layers.Dense(64,activation = 'relu')) # 全连接层,中间输出一个64位的隐藏层,而且采用'relu'作为激活函数 model.add(layers.Dense(10,activation = 'softmax')) # 添加一个输出层,并且采用softmax函数作为激活函数(需要输出概率)

#编译,optimizer='adam'表示使用adam梯度下降算法

#loss = 'sparse_categorical_crossentropy'表示使用sparse_categorical_crossentropy损失函数计算交叉熵 #metrics = ['acc'] 表示使用acc指标进行计算混合矩阵的值(做为评估值)

model.compile(optimizer = 'adam',loss = 'sparse_categorical_crossentropy',metrics = ['acc'])

#训练 ,epochs表示每张图片训练的次数,batch_size 表示每次先训练512张图片,防止内存爆炸 model.fit(train_image,train_label,epochs = 50,batch_size = 512)

 

model.evaluate(test_image,test_label)#测试

 

import numpy as np

np.argmax(model.predict(test_image[:10]),axis = 1) # 通过argmax函数把预测的前十个元素输出

test_label[:10] #测试集中的前十个数

 

增加网络容量(隐藏层)以增加准确率

model = keras.Sequential() #添加一个模型(该模型中支持cnn,rnn等)

model.add(layers.Flatten()) #第一层展平,变成60000个,28*28

model.add(layers.Dense(64,activation = 'relu')) # 全连接层,中间输出一个64位的隐藏层,而且采用'relu'作为激活函数 model.add(layers.Dense(64,activation = 'relu')) # 全连接层,中间输出一个64位的隐藏层,而且采用'relu'作为激活函数 model.add(layers.Dense(64,activation = 'relu')) # 全连接层,中间输出一个64位的隐藏层,而且采用'relu'作为激活函数 model.add(layers.Dense(10,activation = 'softmax')) # 添加一个输出层,并且采用softmax函数作为激活函数(需要输出概率)

#loss = 'sparse_categorical_crossentropy'表示使用sparse_categorical_crossentropy损失函数计算交叉熵 #metrics = ['acc'] 表示使用acc指标进行计算混合矩阵的值(做为评估值)

model.compile(optimizer = 'adam',loss = 'sparse_categorical_crossentropy',metrics = ['acc'])

model.fit(train_image,train_label,epochs = 50,batch_size = 512,validation_data = (test_image,test_label))

model.evaluate(test_image,test_label)

model.evaluate(train_image,train_label)

注:学习日月光华老师视频后个人做的笔记,代码可以成功运行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值