百度飞桨深度学习7日打卡营 课程总结2
课程链接 https://aistudio.baidu.com/aistudio/course/introduce/7073
飞桨官网 https://www.paddlepaddle.org.cn/
课程案例合集 https://aistudio.baidu.com/aistudio/projectdetail/1505799?channelType=0&channel=0
目录
课节1:走进深度学习与飞桨高层API
(正式第一课)
课程介绍
《深度学习7日打卡营》
-
课程大纲
- 深度学习入门: 深度学习简介;深度学习大致的原理;快速上手实践。
- CV+NLP: 实践图像分类、人脸关键点检测、情感分析、文本生成。
- 部署上手: 带你将模型部署到开发板,完成端到端的学习。
-
课程收获
-深度学习相关的基础概念
-计算机视觉领域一些基础和算法
-自然语言处理领域一些基础和算法
-端到端的案例代码实践
-PaddlePaddle深度学习框架(高层APl)
-模型部署中的一种方法
-自己能应用PaddlePaddle高层API完整搭建并训练一个深度学习网络 -
使用工具
-编程语言:Python
-深度学习框架:PaddlePaddle
-其他Python包:NumPy、Pillow
-深度学习算法:Linear、LeNet、ResNet、LSTM、Seq2Seq 等等 -
课程形式
在线授课:作业实践:项目实践 = 2:1:1
人工智能
-
人工智能是新一轮科技革命和产业变革核心驱动力量
- 第一次工业革命:机械技术
- 第二次工业革命:电气技术
- 第三次工业革命:信息技术
- 第四次工业革命:人工智能
-
人工智能、机器学习和深度学习三者关系
- 人工智能:人类想要达成的目标。
- 机器学习:达成人工智能的一个手段。
- 深度学习:机器学习中的一种方法。
机器学习
-
机器学习是仿人的一套归纳和演绎过程
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L2TotmUB-1614930883507)(/materials/pic1.jpg)]
-
机器学习算法构成的三要素
- 假设空间:模型的假设或表示。
- 优化目标:评价或损失函数(Loss)。
- 寻解算法:优化/求解算法 。
-
神经网络
- 神经元:神经网络中的每个节点称为神经元,由加权和非线性变换(激活函数)组成。
- 神经网络:大量的神经元按照不同的层次排布,形成多层的结构连接起来,即称为神经网络。
- 前向计算和反向传播:网络的输出计算和参数更新。
深度学习
-
2010年后,深度学习的条件成熟:大数据时代到来、硬件的发展和成熟、算法优化。
-
推动人工智能进入工业大生产阶段,算法的通用性导致标准化、自动化和模块化的框架产生。实现了人工智能研发模式从手工作坊到工业化变革。
-
关键环节:数据、模型、训练和预测。
-
一般流程:
-
问题定义:对现实问题进行分析。直接影响算法的选择、模型评估标准,投入的时间。
-
数据准备:
数据范围定义:适配任务的所需信息。
数据获取:下载、清洗。
数据的预处理:预处理、增强。
数据集定义和切分:训练、评估、测试。 -
模型选择和开发:对应问题选用合适的模型,寻找或编写对应的模型代码。
-
模型训练和调优:使用数据集启动对模型的训练,围绕业务所需的模型目标进行模型调优。
-
模型评估测试:对训练好的模型进行评估测试,验证模型是否达到业务需求。
-
部署上线:模型存储、导出、推理服务部署线上系统对接,指标监控。
-
百度飞桨介绍
- 飞桨 (PaddlePaddle,PArallel Distributed Deep Learning)2.0版本
闻说双飞桨,翩然下广津。——朱熹
取义为:快船。百度希望飞桨助推人工智能走的更快更远! - 官网:https://www.paddlepaddle.org.cn/
- Github: https://github.com/PaddlePaddle/Paddle
『深度学习7日打卡营』手写数字识别
流程:
-
问题定义:对现实问题进行分析。直接影响算法的选择、模型评估标准,投入的时间。
-
数据准备:
数据集定义:paddle.io.Dataset、数据多进程异步加载:paddle.io.Dataloader
30+个计算机视觉领域数据预处理工具:paddle.vision.transforms.*
14种计算机视觉和文本处理领域常见数据集封装:paddle.vision.datasets/paddle.text.datasets数据集名称: MNIST数据集
官网: http:/yann.lecun.com/exdb/mnist/
训练样本量: 60,000张
验证样本量: 10,000张
单个样本形状: (28,28)
加载使用方式: paddle.vision.datasets.MNIST -
模型选择和开发:
12个计算机视觉领域常用模型封装:paddle.vision.models.*
网络结构可视化:model.summary() / paddle.summary()飞桨框架:
- 方式1:Sequential
- 方式2:Subclass
- 方式3:内置网络
-
模型训练和调优:
模型封装和执行:model.prepare()、model.fit()
- Model封装
- 指定优化器
- 指定Loss计算方法
- 指定评估指标
- 按照训练的轮次和数据批次迭代训练
-
模型评估测试:
模型评估:model.evaluate()
模型测试:model.predict()- 基于验证样本对模型进行评估验证
- 得到Loss和评价指标值
-
部署上线:模型存储、导出、推理服务部署线上系统对接,指标监控。
预测部署模型存储:model.save(path,training=False)
- 存储模型
- 使用预测引擎部署 → PaddleSlim → Paddlelnference、PaddleLite、PaddleJs
问题定义
把灰度的,高为28,宽为28的手写的阿拉伯数字图像分类到0-9的类别当中
导入相关库
import paddle
import numpy as np
import matplotlib.pyplot as plt
paddle.__version__
输出:
'2.0.0'
数据准备
2.1 数据加载和预处理
import paddle.vision.transforms as T
# 数据的加载和预处理
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('训练集样本量: {},验证集样本量: {}'.format(len(train_dataset), len(eval_dataset)))
输出:
训练集样本量: 60000,验证集样本量: 10000
2.2 数据集查看
print('图片:')
print(type(train_dataset[0][0]))
print(train_dataset[0][0])
print('标签:')
print(type(train_dataset[0][1]))
print(train_dataset[0][1])
# 可视化展示
plt.figure()
plt.imshow(train_dataset[0][0].reshape([28,28]), cmap=plt.cm.binary)
plt.show()
输出:
图片:
<class 'numpy.ndarray'>
[[[-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. ]
[-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. ]
[-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. ]
[-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. ]
[-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -1. ]
[-1. -1. -1. -1. -1.
-1. -1. -1. -1. -1.
-1. -1. -0.9764706 -0.85882354 -0.85882354
-0.85882354 -0.01176471 0.06666667 0.37254903 -0.79607844
0.3019608 1. 0.9372549 -0.00392157 -1.
-1. -1. -1. ]
[-1. -1. -1. -1. -1