fferflo/einx
Universal Notation for Tensor Operations in Python
它解决了什么问题
einx 简化了跨不同机器学习框架制定张量运算的复杂过程。它通过提供一种通用的高阶标记法来描述张量应如何被操作与缩减,消除了手动编写繁琐的 reshape、transpose 和 squeeze 操作的需求。
运作原理
该库使用基于字符串的标记法,根据循环标记法的类比来描述所需的输出。用户指定一个基本运算(如 sum、mean 或自定义函数)以及一个定义该运算如何向量化的表达式。
在内部,einx 不使用缓慢的 Python for 循环;相反地,它将这些表达式编译成优化的 Python 代码片段,调用底层张量框架(如 NumPy、PyTorch、JAX、TensorFlow 或 MLX)的原生运算。
适用对象
它专为在 AI 与机器学习领域处理张量的研究人员与开发者所设计,适合想要以框架无关的方式处理复杂张量转换与缩减的用户。
特色亮点
- 通用接口: 可在 NumPy、PyTorch、JAX、TensorFlow 和 MLX 之间无缝运作。
- 灵活标记法: 支持使用简洁的字符串语法进行排列、分割、展平与收集数值。
- 自定义运算: 允许用户通过适配器(adapters)将自己的 Python 函数调整为 einx 标记法。
- 透明编译: 用户可以通过将
graph=True传递给运算来检查生成的后端代码。
相关
- 项目
- 项目
- 项目
- 项目