- 24 3月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
Our old `loop_body` function may return single element when `loop_vars` just contains only 1 element, which can cause bug. The key point of this PR is forcing `loop_body` functions always return tuple.
-
- 04 3月, 2021 2 次提交
-
-
由 Huihuang Zheng 提交于
Fix wrong code comment
-
由 Huihuang Zheng 提交于
Fix Read-Only Attribute as while_loop Output: Usually, our convert_while_loop will be like: ``` [a, b, c] = paddle.jit.dy2static.convert_while_loop( condition_name, body_name, [a, b, c]) ``` where a, b, c are in loop_var_names. However, if loop_var_names contains property such as foo.x, we cannot assign the attribute as output of convert_while_loop because Python property is a kind of read-only attribute. To handle the case, we replace the attributes which are output of convert_while_loop with generated variables, then if we know the attribute is not read-only at runtime, we assign the attribute. The created statements are like: ``` [a, b, __attribute_variable_1] = paddle.jit.dy2static.convert_while_loop( condition_name, body_name, [a, b, foo.x]) if not isinstance(getattr(type(foo), x, None), property): foo.x = __attribute_variable_1 ```
-
- 18 2月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
Dy2stat didn't support tuple as iteration variable in the past. This PR added there main cases: 1). Non-enumerate case: for var1, var2 in var|var.numpy() will be re-written as: for FOR_ITER_TUPLE_PREFIX_x in var | var.numpy(): var1 = FOR_ITER_TUPLE_PREFIX_x[0] var2 = FOR_ITER_TUPLE_PREFIX_x[1] 2). Enumerate out tuple case: for t in enumerate(var|var.numpy) will be rewritten as: for FOR_ITER_TUPLE_INDEX_PREFIX_x, FOR_ITER_TUPLE_PREFIX_x in enumerate(var|var.numpy): t = (FOR_ITER_TUPLE_INDEX_PREFIX_x, FOR_ITER_TUPLE_PREFIX_x) 3). Enumerate inner tuple case: for i, (var1, (var2, va3)) in enumerate(var|var.numpy()) will be re-written as: for i, FOR_ITER_TUPLE_PREFIX_x in var | var.numpy(): var1 = FOR_ITER_TUPLE_PREFIX_x[0] var2 = FOR_ITER_TUPLE_PREFIX_x[1][0] var3 = FOR_ITER_TUPLE_PREFIX_x[1][1]
-
- 21 12月, 2020 1 次提交
-
-
由 liym27 提交于
[Dy2Stat] Fix bug for loop: a variable is used and created in loop, but used before created (#29769)
-
- 19 11月, 2020 2 次提交
-
-
由 liym27 提交于
[Dynamic-to-Static] Fix bug in loop_transformer: loop vars should contain the var from ancestor-for-node (#28735)
-
由 Huihuang Zheng 提交于
Fix convert_callmMay be called multiple times in Dy2stat. Also strip some strings to make sure no influence from blank spaces.
-
- 17 11月, 2020 1 次提交
-
-
由 Huihuang Zheng 提交于
Fix a bug that used in PaddleGAN model which used `isinstance` in a for loop
-
- 29 9月, 2020 1 次提交
-
-
由 Huihuang Zheng 提交于
Refine Dy2stat APIs to 2.0rc After discussion, we accepted 3 key points from reviewers: 1. In 2.0rc we changed dygraph_to_static folder to dy2static 2. Keep the three files: convert_call_func.py, convert_operators.py, variable_trans_func.py 3. Remove convert_operators path when users import convert_xxx. After this PR, users can import convert_xxx APIs by: `import paddle.jit.dy2static.convert_xxx` The file structure will be: ``` jit dy2static convert_operators.py convert_func_call.py variable_trans_func.py ``` Detail changed API in files: In python/paddle/jit/dygraph_to_static/convert_call_func.py: from ...fluid.dygraph.dygraph_to_static.convert_call_func import convert_call #DEFINE_ALIAS In python/paddle/jit/dygraph_to_static/convert_operators.py: from ...fluid.dygraph.dygraph_to_static.convert_operators import cast_bool_if_necessary #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_assert #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_ifelse #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_len #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_and #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_not #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_logical_or #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_print #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_var_dtype #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_var_shape #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.convert_operators import convert_while_loop #DEFINE_ALIAS In python/paddle/jit/dygraph_to_static/variable_trans_func.py: from ...fluid.dygraph.dygraph_to_static.variable_trans_func import create_fill_constant_node #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.variable_trans_func import create_static_variable_gast_node #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.variable_trans_func import data_layer_not_check #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.variable_trans_func import to_static_variable #DEFINE_ALIAS from ...fluid.dygraph.dygraph_to_static.variable_trans_func import to_static_variable_gast_node #DEFINE_ALIAS
-
- 07 8月, 2020 1 次提交
-
-
由 liym27 提交于
* [Dy2Stat-ErrorMessage]Enhance original error and create new exception. test=develop * Delete redundant code and change func name to create_and_update_origin_info_map. * optimize loop_transformer. * fix bug in print_transformer. * Modify code according to the comments.
-
- 18 6月, 2020 1 次提交
-
-
由 liym27 提交于
-
- 09 6月, 2020 1 次提交
-
-
由 liym27 提交于
* Move function 'convert_len' to file convert_operators.py * Support that for statements are transformed to while statements. * Fix bug: raise None -> return None. * Support variable loaded and created in loop. * Use int64 in Py2 and Py3 in function to_static_variable.
-
- 05 6月, 2020 1 次提交
-
-
由 liym27 提交于
* cast var in convert_logical_XX. * Add convert_ifelse function in convert_operators.py * Add logical_transformer. Remove LogicalTransformer from loop_transformer.py * Revert modified tests in PR24799(convert_while_stmt). * Comment and modify code that doesn't support `return` statement. * Remove unnecessary class: MergeAssignTransformer, NodeTestTransformer and IfConditionVisitor in ifelse_transformer.
-
- 03 6月, 2020 2 次提交
-
-
由 Chen Weihang 提交于
* support for iter & enumerate varbase, test=develop * revert IsControlFlowVisitor change, test=develop
-
由 liym27 提交于
* Support convert_while_loop. * Comment code that not supported 'if' in test_break_continue. * Convert int into tensor to support 'if' stmt in for/while loop. * Add unittest to test all cases of convert_logical_XX. * Add unittest to test all cases of convert_while_loop. * Fix bug in LogicalOpTransformer. test=develop
-
- 28 5月, 2020 2 次提交
-
-
由 Aurelius84 提交于
* support nested input and output test=develop * remove code of convert type(output) in unittest test=develop * add warning test=develop
-
由 liym27 提交于
-
- 26 5月, 2020 1 次提交
-
-
由 liym27 提交于
-
- 19 5月, 2020 1 次提交
-
-
由 Chen Weihang 提交于
-
- 18 5月, 2020 1 次提交
-
-
由 Chen Weihang 提交于
* initial test * for enumerate basic implement, test=develop * update unittests, test=develop * refine unittests to adapt new training mode, test=develop * refactor for node stmts parsing code, test=develop * self-review & polish details, test=develop
-
- 24 4月, 2020 1 次提交
-
-
由 liym27 提交于
* Simplify code for gast.If in is_control_flow_to_transform. * Move IsControlFlowVisitor to file utils. * Don't use convert_call for build-in func in CallTransformer. * Optimize api is_control_flow_to_transform. * Polish the document of IsControlFlowVisitor.
-
- 04 4月, 2020 1 次提交
-
-
由 Huihuang Zheng 提交于
This CR makes two changes: 1. In old loop_transformer, if a class variable, such as "self.a, foo.bar" is a loop var, the Dy2stat will fail because `def func(self.foo)` is not legal syntax. We support class variable by renaming. 2. After https://github.com/PaddlePaddle/Paddle/pull/22892 is merged, we can support `while x < 10` in dygraph. I enable those tests in corresponding Dy2stat
-
- 31 3月, 2020 1 次提交
-
-
由 Huihuang Zheng 提交于
* Remove Read-Only Basic Type Variable in loop_vars test=develop * Put class support in loop for future thing test=develop * Modify based on reviewer's comment test=develop
-
- 29 3月, 2020 1 次提交
-
-
由 Aurelius84 提交于
-
- 26 3月, 2020 1 次提交
-
-
由 liym27 提交于
-
- 19 3月, 2020 1 次提交
-
-
由 Huihuang Zheng 提交于
1. Add support for Break and Continue in Dygraph to Static 2. Also add support for gast.Not in NodeTestTransformer 3. Also add support for logical op transformation in LoopTransformer
-
- 17 3月, 2020 1 次提交
-
-
由 liym27 提交于
* Support Tensor.shape in control flow if/for/while and separate TensorShapeTransformer from BasicApiTransformer. test=develop
-
- 11 3月, 2020 2 次提交
-
-
由 Huihuang Zheng 提交于
1. Add basic support for `for in range` loop 2. Move `test_dygraph_to_static_*` to `dygraph_to_static` dir and rename them 3. Add test case for dict in while_loop
-
由 Aurelius84 提交于
+ Refine code structure and move code related with control flow `if` into `ifelse_transformer.py` + Merge code of `ast_utils.py` into `utils.py`
-
- 06 3月, 2020 1 次提交
-
-
由 Huihuang Zheng 提交于
1. copy.deepcopy in NameVisitor should be changed to copy.copy to make hash or set work 2. read_context should be type of gast.Load()/gast.AugLoad(), not gast.Load/gast.AugLoad
-
- 05 3月, 2020 1 次提交
-
-
由 Huihuang Zheng 提交于
Add basic support for while in translating dygraph to static 1. Analysis the variable liveness in class NameVisitor 2. Replace while key word using while_loop API
-