当前位置:首页>python>aesara,一个超 nice 的 Python 库!

aesara,一个超 nice 的 Python 库!

  • 2026-09-04 03:41:14
aesara,一个超 nice 的 Python 库!

点击上方卡片关注我

设置星标 学习更多技能

aesara是一个用于定义、优化和求值数学表达式的Python库,特别擅长处理多维数组运算。它是Theano项目的继承者,在Theano停止维护后由社区接手开发。aesara的核心优势在于其强大的符号计算能力和自动微分功能,能够将数学表达式编译成高效的C代码或CUDA代码,在CPU和GPU上实现高性能计算。

安装

1、基础安装

使用pip进行安装:

pip install aesara

2、验证安装

安装完成后,可以通过以下代码验证是否安装成功:

import aesaraprint(aesara.__version__)

如果能够正常输出版本号,说明安装成功。

核心特性

  • 符号计算:支持定义符号变量和表达式,延迟计算直到需要时才求值
  • 自动微分:自动计算函数的梯度,支持高阶导数计算
  • 表达式优化:自动优化计算图,消除冗余操作,提高执行效率
  • 代码生成:将表达式编译成优化的C代码或CUDA代码
  • GPU加速:原生支持GPU计算,自动将运算转移到GPU执行
  • 数值稳定性:内置数值稳定的算法实现,避免常见的数值问题
  • 灵活扩展:支持自定义操作和优化规则

基本功能

1、符号变量定义与计算

aesara采用符号计算的方式,首先定义符号变量和表达式,然后编译成函数进行求值,符号变量不存储具体的数值,而是代表一个抽象的数学对象。通过function函数可以将符号表达式编译成可执行的Python函数,传入实际数值进行计算。

import aesaraimport aesara.tensor as at# 定义符号变量x = at.dscalar('x')y = at.dscalar('y')# 定义表达式z = x + yresult = z ** 2# 编译成函数f = aesara.function([x, y], result)# 执行计算output = f(2, 3)print(f"结果: {output}")  # 输出: 25.0

2、矩阵运算

aesara提供了丰富的矩阵和张量运算功能,支持矩阵乘法、转置、求逆等常用操作。这些运算都是符号化的,可以在编译时进行优化。矩阵运算是机器学习和科学计算的基础,aesara通过底层优化的BLAS库实现高效的矩阵计算。在定义复杂的数学模型时,可以像写数学公式一样编写代码,aesara会自动处理底层的优化和执行。

import aesara.tensor as atimport numpy as np# 定义矩阵符号变量A = at.dmatrix('A')B = at.dmatrix('B')# 定义矩阵运算C = at.dot(A, B)D = C.T  # 转置# 编译函数matmul = aesara.function([A, B], D)# 执行计算a = np.array([[1, 2], [3, 4]])b = np.array([[5, 6], [7, 8]])result = matmul(a, b)print("矩阵乘法转置结果:")print(result)

3、共享变量

aesara的共享变量可以在多次函数调用之间保持状态,在实现迭代算法和神经网络训练时非常有用。共享变量存储在内存中,可以被多个函数访问和修改。通过updates参数,可以在函数执行时自动更新共享变量的值。

import aesaraimport aesara.tensor as at# 创建共享变量state = aesara.shared(0)inc = at.iscalar('inc')# 定义更新规则new_state = state + inc# 编译函数,包含更新操作accumulator = aesara.function([inc], state, updates=[(state, new_state)])# 多次调用,状态会累积print(accumulator(1))  # 输出: 0print(accumulator(5))  # 输出: 1print(accumulator(3))  # 输出: 6print(state.get_value())  # 输出: 9

高级功能

1、自动微分

aesara最强大的功能之一是自动微分,可以自动计算任意表达式的梯度,aesara使用反向传播算法高效地计算梯度,即使是非常复杂的嵌套函数也能准确求导。自动微分不仅节省了手动推导梯度的时间,还避免了人为错误。在实现自定义的优化算法时,只需定义目标函数,aesara会自动处理梯度计算。

import aesaraimport aesara.tensor as at# 定义变量和函数x = at.dscalar('x')y = x ** 3 + 2 * x ** 2 + x + 1# 计算梯度grad_y = at.grad(y, x)# 编译函数f = aesara.function([x], y)f_grad = aesara.function([x], grad_y)# 计算函数值和梯度x_val = 2.0print(f"f({x_val}) = {f(x_val)}")print(f"f'({x_val}) = {f_grad(x_val)}")  # 3x^2 + 4x + 1 = 21

2、计算图优化

aesara会自动优化计算图,消除冗余计算,合并相似操作,提高执行效率。通过print_graph函数可以查看优化前后的计算图结构。优化过程包括常量折叠、公共子表达式消除、算子融合等多种技术,这些优化对用户是透明的,不需要手动干预。在处理复杂的数学表达式时,优化器能够显著减少计算量和内存使用。

import aesaraimport aesara.tensor as at# 定义包含冗余计算的表达式x = at.dscalar('x')y = x + x + x + x  # 可以优化为 4*x# 编译函数f = aesara.function([x], y)# 查看优化后的计算图print("优化后的表达式:")aesara.printing.debugprint(f)# 执行计算result = f(5.0)print(f"结果: {result}")

总结

aesara是一个功能强大的数值计算库,为Python提供了高性能的符号计算和自动微分能力。通过符号化的表达式定义和智能的计算图优化,aesara能够将数学公式转化为高效的可执行代码。自动微分功能是机器学习和优化算法的基石,大大简化了复杂模型的实现。虽然学习曲线相对陡峭,但掌握aesara的核心概念后,可以显著提升数值计算的开发效率。

💡推荐阅读

如果在编程工具充值使用上遇到麻烦,推荐一个牛逼的中转工具!一次性搞定 Codex 、Claude Code和 gemini,内容介绍和付费兑换详见文末阅读原文。

我整理了一份《AI 编程出海资料》,把普通人从 0 到 1 的起步路径全拆解了,扫下面的二维码或微信搜索 257735添加VX,回复【出海资料】就可以直接领取。
除了基础配置,还有更核心的需求挖掘和网站分析等等。
如果你想进一步系统学习、实操出海项目,👉 点击了解详情:推荐我的AI编程出海训练营!

推荐一个牛逼的中转工具!

实测 4 个爆火 Skill,一句话生成画布/知识库/任务规划/自动发布

炸裂!Anthropic 又杀疯了!

从海外公司注册到 Stripe 收款,跑通了出海收付款全流程(实操分享)

出海建站必备:告别AI味,这两个页面设计 Skills 太牛了!

玩转 Claude Code Hooks:让自动化渗透到每个环节

出海工具全集:覆盖 9 大类别,收藏这一篇就够了

出海网站实战:Stripe 支付接入,从 0 到收款全流程

出海必备:一天搞定5张港卡,我的香港卡办理全攻略

最新文章

随机文章