机器学习【免费下载链接】autogradEfficiently computes derivatives of NumPy code.项目地址https://gitcode.com/gh_mirrors/au/autograd点击查看免费下载导读本文围绕 Autograd 仓库中的 examples/README.md 展开系统讲解如何正确安装示例运行所需的额外依赖、如何从命令行运行仓库内的 30 余个 Python 示例脚本并结合源码逐类剖析这些示例背后展示的自动微分能力——从elementwise_grad的高阶导数、grad的神经网络反向传播到value_and_grad在流体仿真与高斯过程回归中的应用。读完本文你将掌握 Autograd 示例库的完整运行流程并能把每个示例当作学习自动微分 API 的活教材。一、示例目录概览Autograd 的活文档examples目录是 Autograd 仓库中与 docs/tutorial.md 配套的实战代码集覆盖了自动微分技术在机器学习、概率建模、物理仿真等领域的典型用法。目录内既有几十行的入门脚本如 tanh.py也有完整的 MNIST 神经网络训练器如 neural_net.py还有把梯度反传进流体仿真循环的旗舰示例 fluidsim.py。从仓库根目录 README.md 的End-to-end examples清单可以看到官方将这些示例定位为完整可运行的端到端演示并据此维护了tests/check_examples_run.sh这一自动化校验脚本详见本文第六节。因此示例库既是学习材料也是仓库持续集成的一部分。二、运行前置条件安装examples依赖组2.1 为什么需要额外依赖Autograd 本身的核心依赖非常精简——pyproject.toml 中[project].dependencies仅声明了numpy3即 Autograd 及其核心功能只需要 NumPy 即可运行。但示例脚本普遍需要绘图与可视化能力绝大多数脚本都会调用matplotlib来生成tanh.png、gaussian_process.png这类结果图少数脚本还依赖 SciPy如 fluidsim.py 使用scipy.optimize.minimize、gaussian_process.py 使用autograd.scipy.stats.multivariate_normal。因此官方将这些示例的额外依赖集中收拢在examples依赖组dependency group中。查看 pyproject.toml 的[dependency-groups]段可见[dependency-groups] test [ pytest, pytest-cov, pytest-xdist, xarray, ] examples [matplotlib]也就是说examples依赖组目前只包含matplotlib。值得注意的是文档与配置一致若你运行的是依赖 SciPy 的示例还需另外准备 SciPy——Autograd 在[project.optional-dependencies]中提供了scipy可选组autograd[scipy]具体安装方式可参考 README.md 的安装章节。2.2 安装命令官方文档原版步骤按照 examples/README.md 的说明首先进入你克隆 Autograd 的仓库根目录然后执行pip install --group examples该命令会读取当前项目即克隆的 Autograd 仓库中pyproject.toml声明的examples依赖组并安装其中列出的所有包即matplotlib。2.3 旧版 pip 的兼容处理依赖组dependency groups是 pip 的较新特性。文档特别提示如果本机 pip 版本过旧、不支持--group参数需要先升级 pip 再执行安装pip install --upgrade pip之后重新运行pip install --group examples即可。这一步对 Python 环境管理较旧的机器尤为必要。三、运行示例进入 examples 子目录执行脚本依赖安装完成后进入examples子目录即可直接运行其中的 Python 脚本。文档给出的示例命令为python3 tanh.pytanh.py 是典型的入门示例它用autograd.numpy显式实现 tanh 函数然后用autograd.elementwise_grad即egrad依次求出一阶到四阶导数并把 tanh 及其 14 阶导数画在同一张图上。运行该脚本会在examples目录下生成 tanh.png 并弹出绘图窗口。3.1 终端输出型与弹窗型脚本文档明确指出部分示例只在终端打印文字另一些则会弹出绘图窗口。这个差异完全由脚本内部的plt.show()与print语句决定纯终端输出型如 logistic_regression.py、neural_net.py其训练过程在终端打印每轮 epoch 的 train/test accuracy弹窗绘图型如 tanh.py、sinusoid.py、gaussian_process.py 等均在脚本末尾调用matplotlib.pyplot.show()。在无图形界面的服务器或 CI 环境中运行弹窗型脚本时可自行将plt.show()注释掉或使用非交互式后端如matplotlib.use(Agg)脚本保存 PNG 的核心逻辑不受影响——这正是 check_examples_run.sh 在无头环境下校验示例的方式。四、示例逐类解读每个脚本教什么从源码结构看examples目录中的脚本可以按自动微分能力演示划分为以下几类理解归类有助于你按需挑选学习目标4.1 微分算子入门类脚本核心演示tanh.pyelementwise_grad的向量化高阶求导14 阶rosenbrock.py对经典 Rosenbrock 函数求梯度define_gradient.py用autograd.extend自定义不可微函数的梯度规则dot_graph.py将计算图导出为 Graphviz 点图print_trace.py打印反向传播的 trace 轨迹fixed_points.py不动点迭代的隐式微分其中 define_gradient.py 与 fixed_points.py 深入展示了 Autograd 的扩展机制对应autograd/extend.py与autograd/misc/fixed_points.py适合进阶读者研究如何为自定义算子注入 JVP/VJP 规则。4.2 神经网络与深度学习类neural_net.pyMNIST 手写数字分类的多层感知机完整展示了gradautograd.misc.optimizers.adamautograd.misc.flatten.flattenautograd.scipy.special.logsumexp的组合用法并演示了优化器可以直接优化 list 类型的参数结构这一特性convnet.py卷积神经网络rnn.py 与 lstm.py循环神经网络与 LSTM展示对时间步循环体自动求导neural_net_regression.py神经网络回归。以 neural_net.py 为例其核心代码仅需两步即可训练整个网络objective_grad grad(objective) # 对目标函数自动求梯度 optimized_params adam( objective_grad, init_params, step_sizestep_size, num_itersnum_epochs * num_batches, callbackprint_perf, )这里的init_params是由(weights, bias)元组构成的 Python listAutograd 的adam优化器能直接对其进行原地更新——这正是 README.md 中Autograd 可以处理 loops、ifs、递归和闭包的体现。4.3 概率模型与贝叶斯推断类black_box_svi.py黑盒变分推断的基础实现被多个脚本复用natural_gradient_black_box_svi.py自然梯度版 SVImixture_variational_inference.py混合模型变分推断gmm.py高斯混合模型 EMbayesian_neural_net.py贝叶斯神经网络权重采样向量化使用np.einsum计算批量预测运行后生成 bayesian_neural_net.pngnegative_binomial_maxlike.py负二项分布最大似然。4.4 高斯过程与核方法类gaussian_process.py高斯过程回归用value_and_grad同时获取边际似然及其梯度交给scipy.optimize.minimize做超参数优化运行后生成 gaussian_process.pnggplvm.py高斯过程潜变量模型生成 gplvm.pngdeep_gaussian_process.py深度高斯过程rkhs.py再生核希尔伯特空间示例。其中 gaussian_process.py 展示了 Autograd 与 SciPy 生态无缝衔接的典型范式——用autograd.numpy编写损失/似然函数用value_and_grad一步拿到函数值与梯度再交给外部优化器from scipy.optimize import minimize from autograd import value_and_grad def objective(params, t): return -log_marginal_likelihood(params, inputs, targets) optimized_params minimize( value_and_grad(objective), x0init_params, jacTrue, methodCG, callbackcallback, )4.5 生成模型类variational_autoencoder.py变分自编码器VAE运行后生成 vae_samples.pnggenerative_adversarial_net.py生成对抗网络GAN。4.6 物理仿真与其他fluidsim.py把梯度反向传播进二维流体仿真的迭代循环基于 Jos Stam 的Real-Time Fluid Dynamics for Games是 README 中点名的旗舰示例运行后输出 animated.gif 等可视化结果ode_net.py神经常微分方程网络生成 ode_net_demo.pnghmm_em.py隐马尔可夫模型 EMica.py独立成分分析bayesian_optimization.py贝叶斯优化。五、深度剖析tanh.py中的elementwise_grad原理既然文档以python3 tanh.py作为唯一运行示例这里有必要展开其背后的微分原理。tanh.py 的源码注释解释得很清楚数学上梯度只能对标量值函数求取但elementwise_grad同时利用了 NumPy 对标量函数的向量化机制严格来说elementwise_grad(fun)(x)返回的始终是一个向量-雅可比积VJP雅可比矩阵在x处求值乘向量取与fun输出同尺寸的全 1 向量当把标量函数向量化到多个输入上时整个向量到向量映射的雅可比矩阵是对角的于是该 VJP 恰好返回对角元素——即函数在每个被向量化输入点上的逐元素梯度。因此egrad(tanh)(x) # 一阶导数 egrad(egrad(tanh))(x) # 二阶导数 egrad(egrad(egrad(tanh)))(x) # 三阶导数可以无限嵌套因为 Autograd 对求导结果本身仍然支持继续求导README 中的原话是 derivatives of derivatives of derivatives。这背后依赖的是 autograd/core.py 中 forward/reverse 两种模式的可组合设计每一次egrad都会为下一次求导保留必要的 trace 信息。六、CI 侧验证check_examples_run.sh如何跑通所有示例仓库用 tests/check_examples_run.sh 批量验证所有示例脚本可运行。脚本逻辑值得参考用find examples -name *.py -not -name __init__.py收集全部示例脚本对每个脚本执行timeout 15s python2 $f注意脚本中的解释器名为python2属于历史遗留写法现代环境按 examples/README.md 的指引应使用python3手动运行依据退出码分类0正常完成与124超时但可能正在弹窗阻塞归入 seems to work137被强杀归入 might be working其余归入 seems broken最后分别输出 WORK / FAIL 清单。这个脚本从侧面印证了文档中部分示例打印到终端、部分打开弹窗的说法——124超时状态正是弹窗型脚本在无头环境下等待用户关闭窗口导致的。手动运行时只需按本文第三节的命令执行即可获得同等效果。七、运行常见问题与注意事项pip install --group examples报错先执行pip install --upgrade pip升级 pip再重试文档原文步骤找不到matplotlib确认已在本仓库根目录执行过依赖组安装且当前 Python 环境与安装时一致依赖 SciPy 的示例报ModuleNotFoundError按 README.md 安装autograd[scipy]可选依赖或在环境中单独安装scipy无图形界面环境弹窗卡死注释掉脚本中的plt.show()或设置matplotlib.use(Agg)脚本保存 PNG 的功能不受影响以脚本所在目录为运行基准部分脚本如 neural_net.py通过from data import load_mnist引用同目录模块因此必须像文档指示的那样先cd进examples目录再执行而不是从仓库根目录直接python3 examples/tanh.py。八、小结本文完整覆盖了 examples/README.md 的全部操作步骤升级 pip、安装examples依赖组、进入examples子目录以python3 tanh.py方式运行脚本并在此基础上结合 pyproject.toml、tanh.py、neural_net.py、gaussian_process.py、fluidsim.py 与 check_examples_run.sh 等源码佐证逐类解读了 30 余个示例背后的自动微分能力。对于想要系统掌握 Autograd 的读者推荐按先跑 tanh.py 感受elementwise_grad→ 再跑 neural_net.py 理解gradadam的完整训练流程 → 最后钻研 fluidsim 与 gaussian_process 中的value_and_grad的顺序循序渐进示例目录本身就是最好的学习路线图。赞分享机器学习【免费下载链接】autogradEfficiently computes derivatives of NumPy code.项目地址https://gitcode.com/gh_mirrors/au/autograd点击查看免费下载相关推荐Textual 官方示例程序指南从安装到逐个运行的完整实践手册Textual 官方示例程序指南从安装到逐个运行的完整实践手册 导读 本文围绕 Textual 仓库中 examples/ 目录即 examples/REA前端UI组件异步编程Flash 网页变灰怎么办Ruffle 浏览器扩展 3 步安装与自查指南Flash 网页变灰怎么办Ruffle 浏览器扩展 3 步安装与自查指南 Ruffle 是一个用 Rust 编写的 Flash 播放器模拟器。它的浏览器扩展能音视频Paddle-Lite Python 推理完整示例从安装预测库到运行 mobilenetv1 实战指南Paddle Lite Python 推理完整示例从安装预测库到运行 mobilenetv1 实战指南 导读 本指南以 Paddle Lite 官方 Pyth人工智能推理引擎深度学习边缘计算嵌入式模型优化上一篇如何优化MicroPython代码性能内存管理和执行效率技巧下一篇Biome多项目配置终极指南大型代码库的高效管理策略创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考