Skip to content

エコシステム連携 API

この文書は v0.2 の Luna Flow エコシステム向けブリッジパッケージを説明します。

autodiff/linalg

linalg パッケージは Luna-Flow/linear-algebra/immut の immutable ベクトルと行列を使います。

  • gradient(f, x) -> Vector[T]
  • jacobian(f, x) -> Matrix[T]
  • value_and_gradient(f, x) -> (T, Vector[T])
  • value_and_jacobian(f, x) -> (Vector[T], Matrix[T])

gradient の概念的なシグネチャ:

text
f : Vector[Dual[T]] -> Dual[T]
x : Vector[T]

jacobian の概念的なシグネチャ:

text
f : Vector[Dual[T]] -> Vector[Dual[T]]
x : Vector[T]

Jacobian は output-by-input の向きを使います。

text
J[row = output_index, col = input_index]

このパッケージは n-pass 前進モード seeding を使います。Dual[T] の体としての振る舞いは要求せず、定義もしません。

autodiff/poly

poly パッケージは Luna-Flow/luna-poly へのブリッジです。

dense 単変数ヘルパー:

  • eval_dual(p, x_dual) -> Dual[T]
  • value_and_derivative_at(p, x) -> (T, T)
  • derivative_at(p, x) -> T

sparse を一変数として使うヘルパー:

  • eval_sparse_dual(p, x_dual) -> Dual[T]
  • sparse_value_and_derivative_at(p, x) -> (T, T)
  • sparse_derivative_at(p, x) -> T

これらの関数は既存の Luna Poly 表現を双対数上で評価します。記号微分は行わず、新しい多項式表現も導入しません。