以 Mac 为例,环境要求
需要确认 python 的版本是否满足要求,使用以下命令确认是 3.8/3.9/3.10/3.11/3.12
python3 --version
需要确认 pip 的版本是否满足要求,要求 pip 版本为 20.2.2 或更高版本
python3 -m pip --version
需要确认 Python 和 pip 是 64bit,并且处理器架构是 x86_64(或称作 x64、Intel 64、AMD64)架构 或 arm64 架构(paddle 已原生支持 Mac M1 芯片)
python3 -c "import platform;print(platform.architecture()[0]);print(platform.machine())"
确认好环境之后,要快速上手 PaddlePaddle,可以按照以下步骤进行:
1. 安装 PaddlePaddle
首先,确保你已经安装了 PaddlePaddle。你可以使用 pip 来安装:
安装 CPU 版本
pip3 install paddlepaddle -i https://mirror.baidu.com/pypi/simple
安装安装 Python 的 matplotlib 库和 numpy 库
matplotlib 库用于可视化图片,numpy 库用于处理数据
python3 -m pip install matplotlib numpy -i https://mirror.baidu.com/pypi/simple
2. 验证安装
安装完成后,可以通过以下代码验证安装是否成功:
import paddle
print(paddle.__version__)
如果出现PaddlePaddle is installed successfully!,说明您已成功安装。
3. 使用 PaddlePaddle 进行简单的任务
以下是一个简单的示例,手写数字识别任务 展示如何使用 PaddlePaddle 进行图像分类任务。
『手写数字识别』是深度学习里的 Hello World 任务,用于对 0 ~ 9 的十类数字进行分类,即输入手写数字的图片,可识别出这个图片中的数字。
完整示例,代码可以直接执行
import paddle
import numpy as np
from paddle.vision.transforms import Normalize
transform = Normalize(mean=[127.5], std=[127.5], data_format="CHW")
# 下载数据集并初始化 DataSet
train_dataset = paddle.vision.datasets.MNIST(mode="train", transform=transform)
test_dataset = paddle.vision.datasets.MNIST(mode="test", transform=transform)
# 模型组网并初始化网络
lenet = paddle.vision.models.LeNet(num_classes=10)
model = paddle.Model(lenet)
# 模型训练的配置准备,准备损失函数,优化器和评价指标
model.prepare(
paddle.optimizer.Adam(parameters=model.parameters()),
paddle.nn.CrossEntropyLoss(),
paddle.metric.Accuracy(),
)
# 模型训练
model.fit(train_dataset, epochs=5, batch_size=64, verbose=1)
# 模型评估
model.evaluate(test_dataset, batch_size=64, verbose=1)
# 保存模型
model.save("./output/mnist")
# 加载模型
model.load("output/mnist")
# 从测试集中取出一张图片
img, label = test_dataset[0]
# 将图片shape从1*28*28变为1*1*28*28,增加一个batch维度,以匹配模型输入格式要求
img_batch = np.expand_dims(img.astype("float32"), axis=0)
# 执行推理并打印结果,此处predict_batch返回的是一个list,取出其中数据获得预测结果
out = model.predict_batch(img_batch)[0]
pred_label = out.argmax()
print("true label: {}, pred label: {}".format(label[0], pred_label))
# 可视化图片
from matplotlib import pyplot as plt
plt.imshow(img[0])
plt.show()
执行结果
以上代码使用 MNIST 数据集训练并测试了 LeNet 模型,并最终成功推理出了一张手写数字图片的标签,该图片推理结果是 7 ( pred label: 7),真实标签也是7 (true label: 7)。
简单地说,深度学习任务一般分为以下几个核心步骤:
- 数据集定义与加载
- 模型组网
- 模型训练与评估
- 模型推理
4. 参考文档和教程
要深入学习 PaddlePaddle,可以参考以下资源:
这些资源提供了详细的 API 参考、示例代码和使用指南,帮助你更好地理解和使用 PaddlePaddle。