diff --git a/python/paddle/fluid/executor.py b/python/paddle/fluid/executor.py index 995fa188e25128b771c23ead8bc7195127832b5c..8702c800498ef5a82eac9a4939ac4a04ea15d30c 100644 --- a/python/paddle/fluid/executor.py +++ b/python/paddle/fluid/executor.py @@ -1385,23 +1385,24 @@ class Executor(object): key = _get_strong_program_cache_key(inner_program, feed, fetch_list) - program = self._add_feed_fetch_ops( - program=inner_program, - feed=feed, - fetch_list=fetch_list, - feed_var_name=feed_var_name, - fetch_var_name=fetch_var_name, - use_fetch_v2=True) - # a little bit tricy here, use inner_program before _add_feed_fetch_ops to get key # while use program to geet _StandaloneExecutor if key not in self._executor_cache._cached_executors: + program = self._add_feed_fetch_ops( + program=inner_program, + feed=feed, + fetch_list=fetch_list, + feed_var_name=feed_var_name, + fetch_var_name=fetch_var_name, + use_fetch_v2=True) + new_program = program.clone() new_exe = _StandaloneExecutor(self.place, new_program, scope) - self._executor_cache._cached_executors[key] = new_exe + self._executor_cache._cached_executors[key] = (new_program, + new_exe) - new_exe = self._executor_cache._cached_executors[key] + program, new_exe = self._executor_cache._cached_executors[key] self._feed_data(program, feed, feed_var_name, scope) if hasattr(program, 'lr_sheduler'):