Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

README.md

chap4 前馈神经网络(PyTorch)

Notebook 内容
前馈神经网络-上.ipynb 激活函数族(sigmoid/tanh/relu/leaky_relu/elu/softplus)+ 手算反向 vs autograd 对比 + moons 二分类 + hidden/激活函数 ablation
前馈神经网络-下.ipynb iris 三分类 + RunnerV3(DataLoader + best-model 追踪)

实现要点

  • logits-only 输出:模型最后一层不要叠 sigmoid / softmax;二分类用 BCEWithLogitsLoss,多分类用 CrossEntropyLoss,PyTorch 内部融合激活 + 交叉熵,数值更稳。
  • 手算反向 vs autograd:chap4 上把一个 2 层 MLP 的反向手工推一遍(关键化简 $\partial \mathcal{L}/\partial z_2 = \hat y - y$),再用 autograd 跑同一个网络,验证逐元素一致到 $10^{-7}$ 量级。
  • RunnerV3 在 chap3 RunnerV2 基础上做了两件事:
    • DataLoader 喂入训练数据,每个 epoch 内部按小批量遍历;
    • metric_fn(logits, y) -> float + higher_is_better=True/False 解耦 metric 与 loss,dev metric 超过历史最佳就把 state_dict 写到 best_path
    • history 同时记录 train_lossdev_lossdev_metric
  • iris 数据sklearn.datasets.load_iris;标准化的 mean/std 只在训练集上拟合(避免信息泄露)。
  • moons 数据:notebook 内 make_moonstorch.Generator 控制随机性,零外部依赖。

测试

python -m pytest pytorch/tests/test_chap4.py -v