提交 9b512b4c authored 作者: Brandon T. Willard's avatar Brandon T. Willard 提交者: Brandon T. Willard

Clean up and add missing docstring to NoOutputFromInplace Feature

上级 7c4871ce
...@@ -783,6 +783,8 @@ class PreserveVariableAttributes(Feature): ...@@ -783,6 +783,8 @@ class PreserveVariableAttributes(Feature):
class NoOutputFromInplace(Feature): class NoOutputFromInplace(Feature):
"""Prevent `FunctionGraph` outputs within a range from being altered in-place."""
def __init__(self, first_output_idx=0, last_output_idx=None): def __init__(self, first_output_idx=0, last_output_idx=None):
self.first_idx = first_output_idx self.first_idx = first_output_idx
self.last_idx = last_output_idx self.last_idx = last_output_idx
...@@ -791,19 +793,18 @@ class NoOutputFromInplace(Feature): ...@@ -791,19 +793,18 @@ class NoOutputFromInplace(Feature):
if not hasattr(fgraph, "destroyers"): if not hasattr(fgraph, "destroyers"):
return True return True
outputs_to_validate = list(fgraph.outputs)[self.first_idx : self.last_idx] for out in fgraph.outputs[self.first_idx : self.last_idx]:
for out in outputs_to_validate: node = out.owner
if out.owner is None: if node is None:
continue continue
# Validate that the node that produces the output does not produce # Validate that the node that produces the output does not produce
# it by modifying something else inplace. # it by modifying something else in-place.
node = out.owner
op = node.op op = node.op
out_idx = node.outputs.index(out) out_idx = node.outputs.index(out)
if op.destroy_map and out_idx in op.destroy_map: if out_idx in op.destroy_map:
raise aesara.graph.fg.InconsistencyError( raise aesara.graph.fg.InconsistencyError(
"A function graph Feature has requested that outputs of the graph " "A function graph Feature has requested that outputs of the graph "
"be prevented from being the result of in-place " "be prevented from being the result of in-place "
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论