- 🍨 本文为🔗365天深度学习训练营 内部限免文章(版权归 K同学啊 所有)
- 🍦 参考文章地址: 🔗深度学习100例-循环神经网络(RNN)心脏病预测 | 第46天
- 🍖 作者:K同学啊 | 接辅导、程序定制
一、前期工作
语言环境:Python3.6.5
编译器:jupyter notebook
深度学习环境:TensorFlow2
1. 设置GPU(如果使用的是CPU可以忽略这步)
import tensorflow as tf
gpus = tf.config.list_physical_devices("GPU")
if gpus:
gpu0 = gpus[0]
tf.config.experimental.set_memory_growth(gpu0,True)
tf.config.set_visible_devices([gpu0],"GPU")
2. 导入数据
import tensorflow as tf
from tensorflow.keras import datasets,layers,models
import matplotlib.pyplot as plt
(train_images,train_labels),(test_images,test_labels)=datasets.mnist.load_data()
3. 归一化
使不同量纲的特征处于同一数值量级,减少方差大的特征的影响,使模型更准确。
加快学习算法的收敛速度。
train_images,test_images=train_images/255.0,test_images/255.0
train_images.shape,test_images.shape,train_labels.shape,test_labels.shape
输出:((60000, 28, 28), (10000, 28, 28), (60000,), (10000,))
4. 可视化图片
#可视化图片
plt.figure(figsize=(20,10))
for i in range(20):
plt.subplot(2,10,i+1)
plt.xticks([])
plt.yticks([])
plt.grid(False)
plt.imshow(train_images[i],cmap=plt.cm.binary)
plt.xlabel(train_labels[i])
plt.show()
输出为:
5. 调整图片格式
#调整图片格式
train_images=train_images.reshape((60000,28,28,1))
test_images=test_images.reshape((10000,28,28,1))
train_images.shape,test_images.shape,train_labels.shape,test_labels.shape
二、构建CNN网络模型
#构建cnn网络
model =models.Sequential([
layers.Conv2D(32,(3,3),activation='relu',input_shape=(28,28,1)),
layers.MaxPool2D((2,2)),
layers.Flatten(),
layers.Dense(64,activation='relu'),
layers.Dense(10)
])
#打印网络结构
model.summary()
网络结构
三、编译模型
#模型编译
model.compile(
optimizer='adam',
loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
metrics=['accuracy']
)
四、训练模型
#训练模型
history = model.fit(
train_images,
train_labels,
epochs=10,
validation_data=(test_images,test_labels)
)
训练过程
五、预测
通过下面的网络结构我们可以简单理解为,输入一张图片,将会得到一组数,这组代表这张图片上的数字为0~9中每一个数字的几率,out数字越大可能性越大。
LeNet-5网络结构
plt.imshow(test_images[1])
pre =model.predict((test_images))
pre[1]
准确率为:
声明
本人为初学者,教程来源为k同学啊的100例。
首先了解卷积层各个层的作用与优化功能:
输入层: 用于将数据输入到训练网络
卷积层: 使用卷积核提取图片特征
池化层: 进行下采样,用更高层的抽象表示图像特征
Flatten层:将多维的输入一维化,常用在卷积层到全连接层的过渡
全连接层:起到“特征提取器”的作用
输出层: 输出结果