- 01 4月, 2021 3 次提交
-
-
由 ShenLiang 提交于
* support control flow * supoort sync_parameters_buffers * fix the bug of sparse embedding
-
由 chentianyu03 提交于
* add custom init grad for backward function * add custom init grad for backward function * handle when the grad_tensor is none * handle when the grad_tensor is none * fix the args type error on windows platform * modify the args order and doc * format code * add grad_tensor to xpu * modify the grad_tensor type check * add paddle.backward api to support multi tensors gradient compute * add paddle.backward api to support multi tensors gradient compute * add paddle.atuograd module and backward api * change tensor.backward func args * modify tensor backward api * remove create_graph intputs args * add doc and examplex code for backward api * when have the same tensor, throw error * modify test Init func args * modify the execute.Init func args in test files * add paddle.autograd package in setup.py.in * modify error msg, remove _run_backward method in class Tensor * add test cases for backward api
-
由 Chen Weihang 提交于
* refactor and simplify hook design * fix reducer add hook error * add Tensor.register_hook basic impl * refine prepare data impl * revert prepare data change * support register_hook for Tensor * add hook test in model * polish tests and doc example * fix double grad test failed * remove reduce hook func * fix set empty error * polish code by comments * change reduce_hook to mutable_hook * remove useless tmp_ins * fix shape code format error * fix shape code format error
-
- 31 3月, 2021 1 次提交
-
-
由 Wenyu 提交于
* support minus-int idx to LayerList * update layerlist test
-
- 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.
-
- 11 3月, 2021 2 次提交
-
-
由 Aurelius84 提交于
* Fix bug with static_convert_var_shape * replace dot with dash
-
由 Aurelius84 提交于
* fix bug with jit.save * refine code
-
- 04 3月, 2021 3 次提交
-
-
由 liym27 提交于
-
由 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 ```
-
- 26 2月, 2021 1 次提交
-
-
由 Aurelius84 提交于
* fix eval_if_exist_else_none bug * fix typo * fix typo * fix test_op_num unittest
-
- 24 2月, 2021 1 次提交
-
-
由 chentianyu03 提交于
* add error msg when dtypes of operator are not same * add error msg when dtypes of operator are not same * change error msg to warning msg when dtypes of operator are not same * modify test case to fit for python2
-
- 22 2月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
**Problem** In our old shape transformer logic, if user write: ``` s = tensor.shape ... y = paddle.some_api(s) ``` Dy2stat will change it to ``` ... y = paddle.some_api(convert_var_shape(tensor)) ``` However it will cause fatal bug if user changes the shape of `x` after assign. For example: ``` s = tensor.shape ... tensor = paddle.some_change_shape_api(tensor) ... y = paddle.some_api(s) ``` Then the Dy2stat will get wrong result because the code is translated into: ``` tensor = paddle.some_change_shape_api(tensor) ... y = paddle.some_api(convert_var_shape(tensor)) # tensor shape has been changed, not origin `s` value ``` **Solution Logic** It can not be solved in the old logic, so I refactoring tensor_shape_transformer logic. Now we will use `s` to store shape attribute and generate a var `s__STATIC_CONVERT_VAR_SHAPE_SUFFIX` to store static shape API `shape(tensor)` ``` s = tensor.shape ... y = paddle.some_api(s) ``` Dy2stat will change it to ``` s = tensor.shape s__STATIC_CONVERT_VAR_SHAPE_SUFFIX = shape(tensor) ... y = paddle.some_api(choose_shape_attr_or_api(s, s__STATIC_CONVERT_VAR_SHAPE_SUFFIX )) ``` In this case, the code is consistent with origin dygraph meaning and it fixed the change after assign bug. **Code Key Note** To help reviewers, the key change of this PR is changing `self.name_to_var_shape` from "mapping name to shape node" to "mapping name to its STATIC_CONVERT_VAR_SHAPE_SUFFIX name", then if a variable name has the SUFFIX, we can choose to use attribute shape or shape api. Other changes go with the key change. **Consideration** The issue of this PR is that we store extra static `shape` API result, will it harms the speed of Dy2stat? In some cases it will, but we argue that the benefit would be greater than the cost. 1. The extra calling to static `shape` API will happen when coder assign among shape variables. Take the following dygraph code as an instance: ``` s1 = tensor.shape s2 = s1 s3 = s2 ... ``` Then we called extra static `shape` APIs again and again, however users seldom write code like this. 2. If the shape variable is used a lot, for example: ``` s = tensor.shape y1 = paddle.some_api1(s) y2 = paddle.some_api2(s) y3 = paddle.some_api3(s) ``` Our old logic will create 3 shape APIs but now just 1. This is more common user code pattern. In fact, if reviewers take a look at the current unit test in this PR, you could see the op numbers decrease after this PR. So we argue that this PR can also improve speed in this code pattern.
-
- 20 2月, 2021 1 次提交
-
-
由 Huihuang Zheng 提交于
As the title, when slice_node like 1:3 being passed to idx of convert_var_shape, it will cause syntax error because a function cannot take this as argument. This PR fixed it.
-
- 19 2月, 2021 1 次提交
-
-
由 ShenLiang 提交于
-
- 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]
-
- 07 2月, 2021 1 次提交
-
-
由 wanghuancoder 提交于
* fix a bug of Sequential::__getitem__, test=develop * add testcase, test=develop
-
- 05 2月, 2021 1 次提交
-
-
由 wanghuancoder 提交于
-
- 03 2月, 2021 2 次提交
-
-
由 AshburnLee 提交于
-
由 WangXi 提交于
-
- 27 1月, 2021 1 次提交
-
-
由 liym27 提交于
-
- 26 1月, 2021 1 次提交
-
-
由 Leo Chen 提交于
* polish printing dtype * fix special case
-
- 20 1月, 2021 3 次提交
-
-
由 wanghuancoder 提交于
* delete empty line of pybing.cc, test=develop * fix layers train eval bug, test=develop
-
由 Aurelius84 提交于
* add paddle. * add unittest
-
由 Aurelius84 提交于
-
- 14 1月, 2021 1 次提交
-
-
由 Chen Weihang 提交于
-
- 13 1月, 2021 2 次提交
- 11 1月, 2021 3 次提交
-
-
由 WeiXin 提交于
* Fix bug for 'save mutiple method' * To pass coverage. * edit code to pass coverage. * edit code to pass coverage. * add unittest for coverage. * change for coverage. * edit for coverage.
-
由 Huihuang Zheng 提交于
Add clone method for static Variable so that this interface will be same as dygraph. It fixed some bugs in dy2stat
-
由 XiaoguangHu 提交于
* delete paddle.nn.functional.assign * fix dynamic to static error
-
- 08 1月, 2021 3 次提交
-
-
由 Aurelius84 提交于
* fix tensor shape bug * fix op_num * clean code
-
由 liym27 提交于
-
由 liym27 提交于
1. When x is Variable, call nn.shape(x) only in following cases: 1)The shape of x is used in control flow condition. 2)The dim to be used is negetive 2. When x is Variable, but x.shape or x.shape[idx] doesn't contain negetive value, don't convert to paddle.shape()
-
- 07 1月, 2021 1 次提交
-
-
由 wangchaochaohu 提交于
-
- 06 1月, 2021 1 次提交
-
-
由 Zhou Wei 提交于
* Polish and Optimize the print/repr message of all layer * fix some code format
-
- 31 12月, 2020 1 次提交
-
-
由 lilong12 提交于
* add distributed.split, test=develop
-
- 28 12月, 2020 1 次提交
-
-
由 wawltor 提交于
fix the state_dict bug for the xpu
-
- 22 12月, 2020 1 次提交
-
-
由 ShenLiang 提交于
* fix fleet for multi-stream * fix memcpy for ncclid * use sync to solve move operation
-
- 21 12月, 2020 1 次提交
-
-
由 liym27 提交于
[Dy2Stat] Fix bug for loop: a variable is used and created in loop, but used before created (#29769)
-