家长须在“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识别手写数字的资料请关注脚本之家其它相关文章!
