文章目录
paddle2.0高层API快速实现LeNet(MNIST手写数字识别)
『深度学习7日打卡营·快速入门特辑』
零基础解锁深度学习神器飞桨框架高层API,七天时间助你掌握CV、NLP领域最火模型及应用。
- 掌握深度学习常用模型基础知识
- 熟练掌握一种国产开源深度学习框架
- 具备独立完成相关深度学习任务的能力
- 能用所学为AI加一份年味
DL万能公式
import paddle
import numpy as np
import matplotlib.pyplot as plt
paddle.__version__
'2.0.0'
数据加载和预处理
import paddle.vision.transforms as T
# 数据加载和预处理
# [0-255] -> [0-1]
transform = T.Normalize(mean=[127.5], std=[127.5])
# 训练数据集
train_dataset = paddle.vision.datasets.MNIST(mode='train', transform=transform)
# 评估数据集
eval_dataset = paddle.vision.datasets.MNIST(mode='test', transform=transform)
print(f"训练集样本量:{len(train_dataset)},验证集样本量:{len(eval_dataset)}")
训练集样本量:60000,验证集样本量:10000
查看数据
%matplotlib inline
plt.figure()
plt.imshow(train_dataset[0][0].reshape([28, 28]), cmap=plt.cm.binary)
plt.show()
print("label:", train_dataset[0][1])
print("data shape:", train_dataset[0][0].shape)
label: [5]
data shape: (1, 28, 28)
搭建LeNet-5卷积神经网络
选用LeNet-5网络结构。
LeNet-5模型源于论文“LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.”,
论文地址:https://ieeexplore.ieee.org/document/726791
每个阶段用到的Layer
# 网络搭建
net = paddle.nn.Sequential(
('C1', paddle.nn.Conv2D(in_channels=1, out_channels=6, kernel_size=