Skip to content

Commit aa54638

Browse files
committed
move _is_inited_by into framework.py
1 parent a7448d5 commit aa54638

File tree

1 file changed

+20
-1
lines changed

1 file changed

+20
-1
lines changed

python/paddle/fluid/framework.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1038,7 +1038,26 @@ def create_parameter(self, *args, **kwargs):
10381038
global_block = self.program.global_block()
10391039
param = Parameter(global_block, *args, **kwargs)
10401040
if 'initializer' in kwargs:
1041-
kwargs['initializer'](param, self)
1041+
1042+
def _is_inited_by(block, var):
1043+
init_ops = []
1044+
for op in block.ops:
1045+
if var.name in op.output_arg_names:
1046+
init_ops.append(op)
1047+
return init_ops
1048+
1049+
initializer = kwargs['initializer']
1050+
init_ops = _is_inited_by(global_block, param)
1051+
init_ops_len = len(init_ops)
1052+
if init_ops_len > 1:
1053+
raise RuntimeError("param " + param.name +
1054+
" is inited by multiple init ops " + str(
1055+
init_ops))
1056+
elif init_ops_len == 1:
1057+
#TODO already inited, do nothing, should log a warning
1058+
pass
1059+
else:
1060+
initializer(param, self)
10421061
return param
10431062

10441063
def append_op(self, *args, **kwargs):

0 commit comments

Comments
 (0)