提交 dc02ed59 authored 作者: James Bergstra's avatar James Bergstra

tensor.Canonize - adding external simplifiers to permit adding optimizations to…

tensor.Canonize - adding external simplifiers to permit adding optimizations to the local_canonicalizers / canonizers
上级 de37ce49
...@@ -1219,6 +1219,11 @@ class Canonizer(gof.LocalOptimizer): ...@@ -1219,6 +1219,11 @@ class Canonizer(gof.LocalOptimizer):
self.calculate = calculate self.calculate = calculate
self.use_reciprocal = use_reciprocal self.use_reciprocal = use_reciprocal
self.external_simplifiers = []
def add_simplifier(self, simplifier, reason):
self.external_simplifiers.append((reason, simplifier))
def tracks(self): def tracks(self):
return [[self.main, None], [self.inverse, None], [self.reciprocal, None]] return [[self.main, None], [self.inverse, None], [self.reciprocal, None]]
...@@ -1386,7 +1391,12 @@ class Canonizer(gof.LocalOptimizer): ...@@ -1386,7 +1391,12 @@ class Canonizer(gof.LocalOptimizer):
""" """
Shorthand for: self.simplify_constants(*self.simplify_factors(num, denum)) Shorthand for: self.simplify_constants(*self.simplify_factors(num, denum))
""" """
return self.simplify_constants(*self.simplify_factors(num, denum)) rval = self.simplify_constants(*self.simplify_factors(num, denum))
for reason, simplifier in self.external_simplifiers:
# TODO: document that 'reason' is associated with this simplification
# to help auditing when things go wrong
rval = simplifier(*rval)
return rval
def simplify_factors(self, num, denum): def simplify_factors(self, num, denum):
""" """
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论