南宁铝皮保温施工队 Python神经网络TensorFlow基于CNN卷积识别手写数字

铁皮保温

家长须在“e龙岩”上注册并完成高级实名认证后方可进行网上报名。

转战渡黄河,休兵乐事多。 —— 李白《塞上曲》

基础理论

第一层:卷积层。

第二层:卷积层。

第三层:全连接层。

第四层:输出层。

图中原始的手写数字的图片是一张 28×28 的图片,并且是黑白的,所以图片的通道数是1,输入数据是 28×28×1 的数据,如果是彩色图片,图片的通道数就为 3。 该网络结构是一个 4 层的卷积神经网络(计算神经网络层数的时候,有权值的才算是一层,池化层就不能单独算一层)(池化的计算是在卷积层中进行的)。 对多张特征图求卷积,相当于是同时对多张特征图进行特征提取。

特征图数量越多说明卷积网络提取的特征数量越多,如果特征图数量设置得太少容易出现欠拟,铁皮保温如果特征图数量设置得太多容易出现过拟,所以需要设置为适的数值。

一、训练CNN卷积神经网络

1、载入数据

2、改变数据维度

注:在TensorFlow中,在做卷积的时候需要把数据变成4维的格式。 这4个维度分别是:数据数量,图片高度,图片宽度,图片通道数。

3、归一化

4、独热编码

5、搭建CNN卷积神经网络

5-1、第一层:第一个卷积层

第一个卷积层:卷积层+池化层。

5-2、第二层:第二个卷积层

5-3、扁平化

把(64,7,7,64)数据变成:(64,7*7*64)。

flatten扁平化:

邮箱:215114768@qq.com5-4、第三层:第一个全连接层

5-5、第四层:第二个全连接层(输出层)

6、编译

设置优化器、损失函数、标签。

7、训练

8、保存模型

果:

Epoch 1/10 938/938 [==============================] - 142s 151ms/step - loss: 0.3319 - accuracy: 0.9055 - val_loss: 0.0895 - val_accuracy: 0.9728 Epoch 2/10 938/938 [==============================] - 158s 169ms/step - loss: 0.0911 - accuracy: 0.9721 - val_loss: 0.0515 - val_accuracy: 0.9830 Epoch 3/10 938/938 [==============================] - 146s 156ms/step - loss: 0.0629 - accuracy: 0.9807 - val_loss: 0.0389 - val_accuracy: 0.9874 Epoch 4/10 938/938 [==============================] - 120s 128ms/step - loss: 0.0498 - accuracy: 0.9848 - val_loss: 0.0337 - val_accuracy: 0.9889 Epoch 5/10 938/938 [==============================] - 119s 127ms/step - loss: 0.0424 - accuracy: 0.9869 - val_loss: 0.0273 - val_accuracy: 0.9898 Epoch 6/10 938/938 [==============================] - 129s 138ms/step - loss: 0.0338 - accuracy: 0.9897 - val_loss: 0.0270 - val_accuracy: 0.9907 Epoch 7/10 938/938 [==============================] - 124s 133ms/step - loss: 0.0302 - accuracy: 0.9904 - val_loss: 0.0234 - val_accuracy: 0.9917 Epoch 8/10 938/938 [==============================] - 132s 140ms/step - loss: 0.0264 - accuracy: 0.9916 - val_loss: 0.0240 - val_accuracy: 0.9913 Epoch 9/10 938/938 [==============================] - 139s 148ms/step - loss: 0.0233 - accuracy: 0.9926 - val_loss: 0.0235 - val_accuracy: 0.9919 Epoch 10/10 938/938 [==============================] - 139s 148ms/step - loss: 0.0208 - accuracy: 0.9937 - val_loss: 0.0215 - val_accuracy: 0.9924

可以发现训练10次以后,果达到了99%+,还是比较不错的。

代码

二、识别自己的手写数字(图像) 1、载入数据

数据集的图片(之一):

2、载入训练好的模型

3、载入自己写的数字图片并设置大小

4、转灰度图

可以发现和数据集中的白底黑字差别很大,所以我们把它反转一下:

5、转黑底白字、数据归一化

MNIST数据集中的数据都是黑底白字,且取值在0~1之间。

6、转四维数据

CNN神经网络预测需要四维数据。

7、预测

8、显示图像

果展示

代码

以上就是Python神经网络TensorFlow基于CNN卷积识别手写数字的详细内容,更多关于TensorFlow识别手写数字的资料请关注脚本之家其它相关文章!