提交 2817ba56 authored 作者: James Bergstra's avatar James Bergstra 提交者: Amjad Almahairi

opt: transpose(inv) -> inv(transpose)

This transformation canonicalizes sandbox linalg ops so that the various cholesky-related transformations are not confused by a transpose.
上级 3a74c6ae
......@@ -256,6 +256,18 @@ def is_positive(v):
return False
@register_canonicalize
@local_optimizer([DimShuffle])
def transinv_to_invtrans(node):
if isinstance(node.op, DimShuffle):
if node.op.new_order == (1, 0):
A, = node.inputs
if A.owner:
if isinstance(A.owner.op, MatrixInverse):
X, = A.owner.inputs
return [A.owner.op(node.op(X))]
@register_stabilize
@local_optimizer([Dot, Dot22])
def inv_as_solve(node):
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论