点击上方卡片关注我
设置星标 学习更多技能
aesara是一个用于定义、优化和求值数学表达式的Python库,特别擅长处理多维数组运算。它是Theano项目的继承者,在Theano停止维护后由社区接手开发。aesara的核心优势在于其强大的符号计算能力和自动微分功能,能够将数学表达式编译成高效的C代码或CUDA代码,在CPU和GPU上实现高性能计算。
使用pip进行安装:
pip install aesara安装完成后,可以通过以下代码验证是否安装成功:
import aesaraprint(aesara.__version__)如果能够正常输出版本号,说明安装成功。
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.0aesara提供了丰富的矩阵和张量运算功能,支持矩阵乘法、转置、求逆等常用操作。这些运算都是符号化的,可以在编译时进行优化。矩阵运算是机器学习和科学计算的基础,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)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()) # 输出: 9aesara最强大的功能之一是自动微分,可以自动计算任意表达式的梯度,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 = 21aesara会自动优化计算图,消除冗余计算,合并相似操作,提高执行效率。通过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,内容介绍和付费兑换详见文末阅读原文。


实测 4 个爆火 Skill,一句话生成画布/知识库/任务规划/自动发布
从海外公司注册到 Stripe 收款,跑通了出海收付款全流程(实操分享)
出海建站必备:告别AI味,这两个页面设计 Skills 太牛了!