Optimizers — 优化器 API
SGDOptimizer
src/nn/optimizers/sgdOptimizer.py
随机梯度下降(Stochastic Gradient Descent)优化器。
构造函数
python
SGDOptimizer(learningRate: float = 0.01)| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
learningRate | float | 0.01 | 学习率 |
异常:
ValueError—learningRate <= 0.0
step()
python
def step(self, layers: Iterable[BaseLayer]) -> None对所有层执行参数更新。
更新规则:
即对每个参数-梯度对:
python
parameter -= self.learningRate * gradient参数:
| 参数 | 类型 | 说明 |
|---|---|---|
layers | Iterable[BaseLayer] | 需要更新的层列表(通常为 model.layers) |
内部流程:
- 遍历每个 layer
- 获取
layer.getParameters()和layer.getGradients() - 逐对验证形状一致
- 就地更新参数
异常:
ValueError— 某层的参数与梯度数量不一致ValueError— 某对参数与梯度形状不一致
zeroGrad()
python
def zeroGrad(self, layers: Iterable[BaseLayer]) -> None清空所有层的梯度。内部委托给各层的 layer.zeroGrad()。
python
for layer in layers:
layer.zeroGrad()使用示例
python
optimizer = SGDOptimizer(learningRate=0.03)
# 训练步骤
optimizer.zeroGrad(model.layers) # 清零梯度
model.forward(batchX) # 前向
loss = lossFunc.forward(...) # 计算损失
model.backward(lossFunc.backward()) # 反向(写入梯度)
optimizer.step(model.layers) # 更新参数