《飞桨 PaddlePaddle 快速上手》

《飞桨 PaddlePaddle 快速上手》

飞桨(PaddlePaddle)是百度开源的深度学习框架,提供动态图(Dygraph,类似 PyTorch)与高层 API。本文介绍安装与一个简单的 MLP 分类示例,帮助从 Keras/TensorFlow 迁移的用户快速上手。

1 安装

# CPU 版 pip install paddlepaddle # GPU 版(CUDA 环境) pip install paddlepaddle-gpu

验证:

import paddle print(paddle.__version__) print(paddle.utils.run_check())

2 高层 API 快速示例(鸢尾花二分类 MLP)

import paddle import numpy as np # 1. 构造数据(线性可分示例) np.random.seed(0) x = np.random.normal(size=(200, 2)).astype("float32") y = ((x[:, 0] + x[:, 1] > 0).astype("int64")).reshape(-1, 1) # 转为 paddle Tensor x = paddle.to_tensor(x) y = paddle.to_tensor(y) # 2. 定义模型(继承 paddle.nn.Layer) class MLP(paddle.nn.Layer): def __init__(self): super().__init__() self.fc1 = paddle.nn.Linear(2, 32) self.fc2 = paddle.nn.Linear(32, 1) def forward(self, x): h = paddle.nn.functional.relu(self.fc1(x)) return self.fc2(h) model = MLP() # 3. 定义优化器与损失 opt = paddle.optimizer.Adam(learning_rate=0.01, parameters=model.parameters()) loss_fn = paddle.nn.functional.binary_cross_entropy_with_logits # 4. 训练 model.train() for epoch in range(200): logits = model(x) loss = loss_fn(logits, y.astype("float32")) loss.backward() opt.step() opt.clear_grad() if epoch % 50 == 0: print(f"epoch {epoch}, loss: {loss.item():.4f}") # 5. 预测 model.eval() pred = (paddle.nn.functional.sigmoid(model(x)).numpy() > 0.5).astype("int32") print("accuracy:", (pred.flatten() == y.numpy().flatten()).mean())

3 与 Keras 概念对照

概念 Keras (tf.keras) PaddlePaddle
模型基类 keras.Model / Sequential paddle.nn.Layer
全连接层 layers.Dense(units, activation=...) paddle.nn.Linear(in, out) + 显式激活函数
优化器 keras.optimizers.Adam(...) paddle.optimizer.Adam(...)
损失 keras.losses.binary_crossentropy paddle.nn.functional.binary_cross_entropy...
梯度清零 opt.apply_gradients / tape opt.clear_grad()
保存模型 model.save("m.h5") paddle.save(model.state_dict(), "m.pdparams")

要点差异:

  • Paddle 的 Linear 需要显式传入输入维度;Keras 的 Dense 会自动推断。
  • 默认动态图模式,梯度更新前需要 opt.clear_grad() 手动清空梯度。
  • 激活函数一般通过 paddle.nn.functional.* 显式调用。

4 常见问题

  • paddle.utils.run_check() 报错:多为 CUDA/显存问题,CPU 环境只装 paddlepaddle 即可。
  • 数据类型不匹配:Paddle 强制 float32/int64 严格区分,to_tensor 前先 astype。
  • eval 时结果抖动:训练/预测模式切换需显式调用 model.train() / model.eval()(影响 Dropout/BatchNorm 等层)。

5 学习资源

阅读 — · 全站 —
🎸 我的歌单 0 首