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 傳遞給運算來檢查生成的後端程式碼。

相關

  • 專案
  • 專案
  • 專案
  • 專案