1. 30 6月, 2020 1 次提交
    • H
      [Dy2stat] Support Various-Length Return Grammar in Dy2stat (#25249) · 5e8e6dad
      Huihuang Zheng 提交于
      Support Various-Length Return Grammar in Dy2stat. This PR is a follow-up of https://github.com/PaddlePaddle/Paddle/pull/25176 .
      
      The basic idea is putting no-value placeholder variables at `return` statement to make all `return` statement have same length, after that the static graph can have fixed fetch output (code at return_transformer.py). Then remove those no-value placeholder when we finally return dygraph result (code at partial_program.py).
      
      However, various length return in Bert model is still not supported. The dy2stat can change the code as I wish but some ops which check shape at compile time (e.g. Reshape, MatMul) will throw error because of the no-value-placeholder may not have the required shape. Is this a matter? To me, those no-value placeholder will be replaced as really values meeting shape requirements at run time, so I think the solution should be some way to do the compile-time checking. By the way, every time when we have dynamic shape, it often causes problem in dy2stat. We should find a way to handle it in the future.
      
      Fixing various return in Bert is my TODO thing and I will also find some other existing models for verification.
      5e8e6dad
  2. 29 6月, 2020 2 次提交
    • A
      [Dy2stat]Support buffers and register_buffer in Layer (#24888) · 02adf68d
      Aurelius84 提交于
      * support to save varBase created in __init__ test=develop
      
      * polish code test=develop
      
      * refine to_static_var test=develop
      
      * refine warning test=develop
      
      * add unitteset for to_static_var test=develop
      
      * fix logger test=develop
      
      * polish buffers en doc test=develop
      
      * fix param_guard test=develop
      
      * refine en doc test=develop
      02adf68d
    • H
      [Dy2stat] Add Basic Support for Grammar 'return' (#25176) · 6f631a27
      Huihuang Zheng 提交于
      This PR added basic support for 'return' grammar in dy2stat. It supports the control flow of 'return'.
      
      The basics idea is using a return value variable to store the early return statements and boolean state variables with if-else to skip the statements after the return statements.
      
      **This PR is very basic support. There are some corner cases I didn't develop/test**. For example, 'return None', 'return different length of variables', 'return non-tensor and tensor together', 'no return statement'. **These corner cases will be done in my next PRs**. Target date is this week.
      
      **Note**: 
      1. for the unit test, I changed test_program_translator.py because the StaticCode of `dyfunc_with_if_else` will change. To guarantee the correctness of `dyfunc_with_if_else`, I also run it in `TestRecursiveReturn` in test_return.py.
      
      2. I commented the early return code in bert_dygraph_model.py because 'return different length of variables' is unsupported now. I also know that there are some other models used early return and we didn't enable it in the unit test. I will add support for it in next PRs and then re-enable those tests.
      6f631a27
  3. 24 6月, 2020 1 次提交
  4. 19 6月, 2020 2 次提交
  5. 18 6月, 2020 1 次提交
  6. 17 6月, 2020 1 次提交
  7. 11 6月, 2020 1 次提交
    • L
      [Dy2Static]Convert var.shape stmt and Convert the return variables of... · f16e2778
      liym27 提交于
      [Dy2Static]Convert var.shape stmt and Convert the return variables of Tensor-dependent 'if' staments to Tensor if it not  (#24911)
      
      * Support int and long: int or long -> six.integer_types. 
      
      * Modify test_tensor_shape: fix bug and modify comment. 
      
      * Support convert_var_shape to convert var.shape stmt
      
      * Modify code in ifelse_simple_func.py because don't support return non-Tensor in Tensor-dependent 'if' stament currently. 
      
      * Convert the return variables of Tensor-dependent 'if' staments to Tensor if it not. test=develop
      f16e2778
  8. 09 6月, 2020 1 次提交
  9. 05 6月, 2020 1 次提交
    • L
      [Dy2Static] Add convert_ifelse to run the transformed code dynamically (#24866) · a9dca580
      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. 
      a9dca580
  10. 03 6月, 2020 3 次提交
  11. 02 6月, 2020 1 次提交
  12. 28 5月, 2020 2 次提交
  13. 27 5月, 2020 1 次提交
  14. 26 5月, 2020 2 次提交
  15. 21 5月, 2020 1 次提交
  16. 19 5月, 2020 3 次提交
  17. 18 5月, 2020 1 次提交
    • C
      [Dy2static] Add for enumerate Variable support (#24398) · 03ba5b74
      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
      03ba5b74
  18. 15 5月, 2020 3 次提交
  19. 14 5月, 2020 1 次提交
  20. 13 5月, 2020 1 次提交
  21. 12 5月, 2020 1 次提交
  22. 09 5月, 2020 2 次提交
  23. 08 5月, 2020 1 次提交
  24. 06 5月, 2020 1 次提交
    • L
      [Dy2Stat]Support list pop (#24250) · ac9a7eee
      liym27 提交于
      * Replace dygraph_to_static_func with @declarative or program_translator.get_func in test_list.py
      
      * Add comments in ConditionalBlock.
      
      * Support list pop last item. 
      
      * Support pop the i-th item. 
      
      * Support an empty tensor array as Input in assign op and set the kernel type is float.
      ac9a7eee
  25. 30 4月, 2020 1 次提交
  26. 27 4月, 2020 1 次提交
    • C
      [dy2static] Add print transformer and unify print format (#24068) · 9b851ba2
      Chen Weihang 提交于
      * add print transformer & unify print format, test=develop
      
      * remove using of dygraph_to_static_func, test=develop
      
      * remove python stdout capture, test=develop
      
      * fix compatibility problems for PY2, test=develop
      
      * fix detail error, test=develop
      
      * fix type analysis bug, test=develop
      
      * fix print tuple compatible error in PY2, test=develop
      
      * replace get_func to declarative, test=develop
      
      * fix detail bug, test=develop
      
      * fix some detail problems, test=develop
      
      * change visit_call in print transformer, test=develop
      9b851ba2
  27. 24 4月, 2020 1 次提交
    • L
      [Dy2Stat] Optimize loop cond (#24049) · 2961a4f0
      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.
      2961a4f0
  28. 20 4月, 2020 1 次提交
  29. 19 4月, 2020 1 次提交