⚽开发平台:jupyter lab
🎈运行环境:python3、tensorflow2.x
第4章 卷积神经网络实战 | 利用自定义的卷积层实现MNIST识别
1.利用自定义的卷积层实现MNIST识别
1.1实现思想
(1) 如何在良好的训练结果上作进一步的提高呢?
一个简单的思想就是建立short-cut,即建立数据通路,使得输入的模型和经过卷积计算后的数据连接在一起,从而解决卷积层总是会忽略掉的某些特定的小细节的问题。
(2) 残差网络:将输入的数据经过计算后又重新与未经过计算的数据通过“叠加”的方式连接在一起,从而建立一个能够保留更多细节内容的卷积结构。
1.2 程序4.6(完整代码)
## 导入相关工具包
import numpy as np
import tensorflow as tf
## 加载MNIST数据集
mnist = tf.keras.datasets.mnist
(x_train,y_train),(x_test,y_test) = mnist.load_data()
## 训练集数目为60000,测试集数目为10000
### 由于CPU训练较慢,现在取部分数据进行实验,若处理速度较快,可省去该步骤
x_train.shape,y_train.shape,x_test.shape #((60000, 28, 28), (60000,), (10000, 28, 28))
(x_train,y_train),(x_test,y_test) = (x_train[:600],y_train[:600]),(x_test[:100],y_test[:100])
x_train.shape,y_train.shape,x_test.shape ## ((600, 28, 28), (600,), (100, 28, 28))
### # 将样本从整数转换为[0,1]区间的浮点数
x_train,x_test = x_train/255.0,x_test/255.0
## 在给定一个input时,在axis轴处给input增加一个维度
x_train = tf.expand_dims(x_train,-1)
### 因为有10个不同的目标值
y_train = np.float32(tf.keras.utils.to_categorical(y_train,num_classes=10))