Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
861fef52
P
Paddle
项目概览
PaddlePaddle
/
Paddle
大约 2 年 前同步成功
通知
2325
Star
20933
Fork
5424
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1423
列表
看板
标记
里程碑
合并请求
543
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1,423
Issue
1,423
列表
看板
标记
里程碑
合并请求
543
合并请求
543
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
未验证
提交
861fef52
编写于
12月 27, 2022
作者:
W
wanghuancoder
提交者:
GitHub
12月 27, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
delete legacy dygraph code in python/paddle/tensor (#49286)
* delete _in_legacy_dygraph
上级
ea741aff
变更
15
显示空白变更内容
内联
并排
Showing
15 changed file
with
4091 addition
and
5104 deletion
+4091
-5104
python/paddle/fluid/framework.py
python/paddle/fluid/framework.py
+1
-2
python/paddle/fluid/tests/unittests/test_unique.py
python/paddle/fluid/tests/unittests/test_unique.py
+13
-6
python/paddle/tensor/array.py
python/paddle/tensor/array.py
+68
-66
python/paddle/tensor/attribute.py
python/paddle/tensor/attribute.py
+43
-51
python/paddle/tensor/creation.py
python/paddle/tensor/creation.py
+368
-438
python/paddle/tensor/einsum.py
python/paddle/tensor/einsum.py
+29
-32
python/paddle/tensor/layer_function_generator.py
python/paddle/tensor/layer_function_generator.py
+49
-45
python/paddle/tensor/linalg.py
python/paddle/tensor/linalg.py
+685
-921
python/paddle/tensor/logic.py
python/paddle/tensor/logic.py
+243
-268
python/paddle/tensor/manipulation.py
python/paddle/tensor/manipulation.py
+1223
-1476
python/paddle/tensor/math.py
python/paddle/tensor/math.py
+761
-1053
python/paddle/tensor/ops.py
python/paddle/tensor/ops.py
+194
-200
python/paddle/tensor/random.py
python/paddle/tensor/random.py
+153
-204
python/paddle/tensor/search.py
python/paddle/tensor/search.py
+201
-281
python/paddle/tensor/stat.py
python/paddle/tensor/stat.py
+60
-61
未找到文件。
python/paddle/fluid/framework.py
浏览文件 @
861fef52
...
@@ -255,8 +255,7 @@ def _test_eager_guard(place=None):
...
@@ -255,8 +255,7 @@ def _test_eager_guard(place=None):
try
:
try
:
yield
yield
finally
:
finally
:
if
not
already_fallback
:
pass
_enable_legacy_dygraph
()
global_ipu_index
=
-
1
global_ipu_index
=
-
1
...
...
python/paddle/fluid/tests/unittests/test_unique.py
浏览文件 @
861fef52
...
@@ -28,7 +28,9 @@ class TestUniqueOp(OpTest):
...
@@ -28,7 +28,9 @@ class TestUniqueOp(OpTest):
self
.
init_config
()
self
.
init_config
()
def
test_check_output
(
self
):
def
test_check_output
(
self
):
paddle
.
enable_static
()
self
.
check_output
()
self
.
check_output
()
paddle
.
disable_static
()
def
init_config
(
self
):
def
init_config
(
self
):
self
.
inputs
=
{
self
.
inputs
=
{
...
@@ -72,6 +74,8 @@ class TestRandom(TestUniqueOp):
...
@@ -72,6 +74,8 @@ class TestRandom(TestUniqueOp):
class
TestUniqueRaiseError
(
unittest
.
TestCase
):
class
TestUniqueRaiseError
(
unittest
.
TestCase
):
def
test_errors
(
self
):
def
test_errors
(
self
):
paddle
.
enable_static
()
def
test_type
():
def
test_type
():
paddle
.
unique
([
10
])
paddle
.
unique
([
10
])
...
@@ -82,6 +86,7 @@ class TestUniqueRaiseError(unittest.TestCase):
...
@@ -82,6 +86,7 @@ class TestUniqueRaiseError(unittest.TestCase):
paddle
.
unique
(
data
)
paddle
.
unique
(
data
)
self
.
assertRaises
(
TypeError
,
test_dtype
)
self
.
assertRaises
(
TypeError
,
test_dtype
)
paddle
.
disable_static
()
@
unittest
.
skipIf
(
@
unittest
.
skipIf
(
...
@@ -100,8 +105,10 @@ class TestOneGPU(TestUniqueOp):
...
@@ -100,8 +105,10 @@ class TestOneGPU(TestUniqueOp):
def
test_check_output
(
self
):
def
test_check_output
(
self
):
if
core
.
is_compiled_with_cuda
():
if
core
.
is_compiled_with_cuda
():
paddle
.
enable_static
()
place
=
core
.
CUDAPlace
(
0
)
place
=
core
.
CUDAPlace
(
0
)
self
.
check_output_with_place
(
place
,
atol
=
1e-5
)
self
.
check_output_with_place
(
place
,
atol
=
1e-5
)
paddle
.
disable_static
()
@
unittest
.
skipIf
(
@
unittest
.
skipIf
(
...
@@ -125,8 +132,10 @@ class TestRandomGPU(TestUniqueOp):
...
@@ -125,8 +132,10 @@ class TestRandomGPU(TestUniqueOp):
def
test_check_output
(
self
):
def
test_check_output
(
self
):
if
core
.
is_compiled_with_cuda
():
if
core
.
is_compiled_with_cuda
():
paddle
.
enable_static
()
place
=
core
.
CUDAPlace
(
0
)
place
=
core
.
CUDAPlace
(
0
)
self
.
check_output_with_place
(
place
,
atol
=
1e-5
)
self
.
check_output_with_place
(
place
,
atol
=
1e-5
)
paddle
.
disable_static
()
class
TestSortedUniqueOp
(
TestUniqueOp
):
class
TestSortedUniqueOp
(
TestUniqueOp
):
...
@@ -209,16 +218,13 @@ class TestUniqueOpAxis1(TestUniqueOp):
...
@@ -209,16 +218,13 @@ class TestUniqueOpAxis1(TestUniqueOp):
class
TestUniqueAPI
(
unittest
.
TestCase
):
class
TestUniqueAPI
(
unittest
.
TestCase
):
def
test_dygraph_api_out
(
self
):
def
test_dygraph_api_out
(
self
):
paddle
.
disable_static
()
x_data
=
x_data
=
np
.
random
.
randint
(
0
,
10
,
(
120
))
x_data
=
x_data
=
np
.
random
.
randint
(
0
,
10
,
(
120
))
x
=
paddle
.
to_tensor
(
x_data
)
x
=
paddle
.
to_tensor
(
x_data
)
out
=
paddle
.
unique
(
x
)
out
=
paddle
.
unique
(
x
)
expected_out
=
np
.
unique
(
x_data
)
expected_out
=
np
.
unique
(
x_data
)
self
.
assertTrue
((
out
.
numpy
()
==
expected_out
).
all
(),
True
)
self
.
assertTrue
((
out
.
numpy
()
==
expected_out
).
all
(),
True
)
paddle
.
enable_static
()
def
test_dygraph_api_attr
(
self
):
def
test_dygraph_api_attr
(
self
):
paddle
.
disable_static
()
x_data
=
np
.
random
.
random
((
3
,
5
,
5
)).
astype
(
"float32"
)
x_data
=
np
.
random
.
random
((
3
,
5
,
5
)).
astype
(
"float32"
)
x
=
paddle
.
to_tensor
(
x_data
)
x
=
paddle
.
to_tensor
(
x_data
)
out
,
index
,
inverse
,
counts
=
paddle
.
unique
(
out
,
index
,
inverse
,
counts
=
paddle
.
unique
(
...
@@ -239,10 +245,8 @@ class TestUniqueAPI(unittest.TestCase):
...
@@ -239,10 +245,8 @@ class TestUniqueAPI(unittest.TestCase):
self
.
assertTrue
((
index
.
numpy
()
==
np_index
).
all
(),
True
)
self
.
assertTrue
((
index
.
numpy
()
==
np_index
).
all
(),
True
)
self
.
assertTrue
((
inverse
.
numpy
()
==
np_inverse
).
all
(),
True
)
self
.
assertTrue
((
inverse
.
numpy
()
==
np_inverse
).
all
(),
True
)
self
.
assertTrue
((
counts
.
numpy
()
==
np_counts
).
all
(),
True
)
self
.
assertTrue
((
counts
.
numpy
()
==
np_counts
).
all
(),
True
)
paddle
.
enable_static
()
def
test_dygraph_attr_dtype
(
self
):
def
test_dygraph_attr_dtype
(
self
):
paddle
.
disable_static
()
x_data
=
x_data
=
np
.
random
.
randint
(
0
,
10
,
(
120
))
x_data
=
x_data
=
np
.
random
.
randint
(
0
,
10
,
(
120
))
x
=
paddle
.
to_tensor
(
x_data
)
x
=
paddle
.
to_tensor
(
x_data
)
out
,
indices
,
inverse
,
counts
=
paddle
.
unique
(
out
,
indices
,
inverse
,
counts
=
paddle
.
unique
(
...
@@ -259,9 +263,9 @@ class TestUniqueAPI(unittest.TestCase):
...
@@ -259,9 +263,9 @@ class TestUniqueAPI(unittest.TestCase):
self
.
assertTrue
((
indices
.
numpy
()
==
np_indices
).
all
(),
True
)
self
.
assertTrue
((
indices
.
numpy
()
==
np_indices
).
all
(),
True
)
self
.
assertTrue
((
inverse
.
numpy
()
==
np_inverse
).
all
(),
True
)
self
.
assertTrue
((
inverse
.
numpy
()
==
np_inverse
).
all
(),
True
)
self
.
assertTrue
((
counts
.
numpy
()
==
np_counts
).
all
(),
True
)
self
.
assertTrue
((
counts
.
numpy
()
==
np_counts
).
all
(),
True
)
paddle
.
enable_static
()
def
test_static_graph
(
self
):
def
test_static_graph
(
self
):
paddle
.
enable_static
()
with
paddle
.
static
.
program_guard
(
with
paddle
.
static
.
program_guard
(
paddle
.
static
.
Program
(),
paddle
.
static
.
Program
()
paddle
.
static
.
Program
(),
paddle
.
static
.
Program
()
):
):
...
@@ -281,6 +285,7 @@ class TestUniqueAPI(unittest.TestCase):
...
@@ -281,6 +285,7 @@ class TestUniqueAPI(unittest.TestCase):
np
.
testing
.
assert_allclose
(
result
[
0
],
np_unique
,
rtol
=
1e-05
)
np
.
testing
.
assert_allclose
(
result
[
0
],
np_unique
,
rtol
=
1e-05
)
np
.
testing
.
assert_allclose
(
result
[
1
],
np_inverse
,
rtol
=
1e-05
)
np
.
testing
.
assert_allclose
(
result
[
1
],
np_inverse
,
rtol
=
1e-05
)
np
.
testing
.
assert_allclose
(
result
[
2
],
np_counts
,
rtol
=
1e-05
)
np
.
testing
.
assert_allclose
(
result
[
2
],
np_counts
,
rtol
=
1e-05
)
paddle
.
disable_static
()
class
TestUniqueError
(
unittest
.
TestCase
):
class
TestUniqueError
(
unittest
.
TestCase
):
...
@@ -295,6 +300,7 @@ class TestUniqueError(unittest.TestCase):
...
@@ -295,6 +300,7 @@ class TestUniqueError(unittest.TestCase):
self
.
assertRaises
(
TypeError
,
test_x_dtype
)
self
.
assertRaises
(
TypeError
,
test_x_dtype
)
def
test_attr
(
self
):
def
test_attr
(
self
):
paddle
.
enable_static
()
x
=
paddle
.
fluid
.
data
(
name
=
'x'
,
shape
=
[
10
,
10
],
dtype
=
'float64'
)
x
=
paddle
.
fluid
.
data
(
name
=
'x'
,
shape
=
[
10
,
10
],
dtype
=
'float64'
)
def
test_return_index
():
def
test_return_index
():
...
@@ -319,6 +325,7 @@ class TestUniqueError(unittest.TestCase):
...
@@ -319,6 +325,7 @@ class TestUniqueError(unittest.TestCase):
result
=
paddle
.
unique
(
x
,
dtype
=
'float64'
)
result
=
paddle
.
unique
(
x
,
dtype
=
'float64'
)
self
.
assertRaises
(
TypeError
,
test_axis
)
self
.
assertRaises
(
TypeError
,
test_axis
)
paddle
.
disable_static
()
if
__name__
==
"__main__"
:
if
__name__
==
"__main__"
:
...
...
python/paddle/tensor/array.py
浏览文件 @
861fef52
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
# Define functions about array.
# Define functions about array.
from
..fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
..fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
..framework
import
LayerHelper
,
_non_static_mode
,
cor
e
from
..framework
import
LayerHelper
,
core
,
in_dygraph_mod
e
from
..static
import
Variable
from
..static
import
Variable
__all__
=
[]
__all__
=
[]
...
@@ -45,12 +45,12 @@ def array_length(array):
...
@@ -45,12 +45,12 @@ def array_length(array):
arr_len = paddle.tensor.array_length(arr)
arr_len = paddle.tensor.array_length(arr)
print(arr_len) # 1
print(arr_len) # 1
"""
"""
if
_non_static
_mode
():
if
in_dygraph
_mode
():
assert
isinstance
(
assert
isinstance
(
array
,
list
array
,
list
),
"The 'array' in array_write must be a list in dygraph mode"
),
"The 'array' in array_write must be a list in dygraph mode"
return
len
(
array
)
return
len
(
array
)
else
:
if
(
if
(
not
isinstance
(
array
,
Variable
)
not
isinstance
(
array
,
Variable
)
or
array
.
type
!=
core
.
VarDesc
.
VarType
.
LOD_TENSOR_ARRAY
or
array
.
type
!=
core
.
VarDesc
.
VarType
.
LOD_TENSOR_ARRAY
...
@@ -63,7 +63,9 @@ def array_length(array):
...
@@ -63,7 +63,9 @@ def array_length(array):
tmp
=
helper
.
create_variable_for_type_inference
(
dtype
=
'int64'
)
tmp
=
helper
.
create_variable_for_type_inference
(
dtype
=
'int64'
)
tmp
.
stop_gradient
=
True
tmp
.
stop_gradient
=
True
helper
.
append_op
(
helper
.
append_op
(
type
=
'lod_array_length'
,
inputs
=
{
'X'
:
[
array
]},
outputs
=
{
'Out'
:
[
tmp
]}
type
=
'lod_array_length'
,
inputs
=
{
'X'
:
[
array
]},
outputs
=
{
'Out'
:
[
tmp
]},
)
)
return
tmp
return
tmp
...
@@ -107,7 +109,7 @@ def array_read(array, i):
...
@@ -107,7 +109,7 @@ def array_read(array, i):
item = paddle.tensor.array_read(arr, i)
item = paddle.tensor.array_read(arr, i)
print(item) # [[5., 5., 5.]]
print(item) # [[5., 5., 5.]]
"""
"""
if
_non_static
_mode
():
if
in_dygraph
_mode
():
assert
isinstance
(
assert
isinstance
(
array
,
list
array
,
list
),
"The 'array' in array_read must be list in dygraph mode"
),
"The 'array' in array_read must be list in dygraph mode"
...
@@ -119,7 +121,7 @@ def array_read(array, i):
...
@@ -119,7 +121,7 @@ def array_read(array, i):
],
"The shape of index 'i' should be [1] in dygraph mode"
],
"The shape of index 'i' should be [1] in dygraph mode"
i
=
i
.
numpy
().
item
(
0
)
i
=
i
.
numpy
().
item
(
0
)
return
array
[
i
]
return
array
[
i
]
else
:
check_variable_and_dtype
(
i
,
'i'
,
[
'int64'
],
'array_read'
)
check_variable_and_dtype
(
i
,
'i'
,
[
'int64'
],
'array_read'
)
helper
=
LayerHelper
(
'array_read'
,
**
locals
())
helper
=
LayerHelper
(
'array_read'
,
**
locals
())
if
(
if
(
...
@@ -167,7 +169,7 @@ def array_write(x, i, array=None):
...
@@ -167,7 +169,7 @@ def array_write(x, i, array=None):
item = paddle.tensor.array_read(arr, i)
item = paddle.tensor.array_read(arr, i)
print(item) # [[5., 5., 5.]]
print(item) # [[5., 5., 5.]]
"""
"""
if
_non_static
_mode
():
if
in_dygraph
_mode
():
assert
isinstance
(
assert
isinstance
(
x
,
Variable
x
,
Variable
),
"The input data 'x' in array_write must be Variable in dygraph mode"
),
"The input data 'x' in array_write must be Variable in dygraph mode"
...
@@ -191,7 +193,7 @@ def array_write(x, i, array=None):
...
@@ -191,7 +193,7 @@ def array_write(x, i, array=None):
else
:
else
:
array
.
append
(
x
)
array
.
append
(
x
)
return
array
return
array
else
:
check_variable_and_dtype
(
i
,
'i'
,
[
'int64'
],
'array_write'
)
check_variable_and_dtype
(
i
,
'i'
,
[
'int64'
],
'array_write'
)
check_type
(
x
,
'x'
,
(
Variable
),
'array_write'
)
check_type
(
x
,
'x'
,
(
Variable
),
'array_write'
)
helper
=
LayerHelper
(
'array_write'
,
**
locals
())
helper
=
LayerHelper
(
'array_write'
,
**
locals
())
...
@@ -265,9 +267,9 @@ def create_array(dtype, initialized_list=None):
...
@@ -265,9 +267,9 @@ def create_array(dtype, initialized_list=None):
)
)
)
)
if
_non_static
_mode
():
if
in_dygraph
_mode
():
return
array
return
array
else
:
helper
=
LayerHelper
(
"array"
,
**
locals
())
helper
=
LayerHelper
(
"array"
,
**
locals
())
tensor_array
=
helper
.
create_variable
(
tensor_array
=
helper
.
create_variable
(
name
=
"{0}.out"
.
format
(
helper
.
name
),
name
=
"{0}.out"
.
format
(
helper
.
name
),
...
...
python/paddle/tensor/attribute.py
浏览文件 @
861fef52
...
@@ -17,10 +17,10 @@
...
@@ -17,10 +17,10 @@
import
numpy
as
np
import
numpy
as
np
import
paddle
import
paddle
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle
import
_C_ops
from
..fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
..fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
..fluid.framework
import
_in_legacy_dygraph
,
in_dygraph_mode
from
..fluid.framework
import
in_dygraph_mode
from
..framework
import
LayerHelper
,
core
from
..framework
import
LayerHelper
,
core
from
..static
import
Variable
from
..static
import
Variable
from
.creation
import
_complex_to_real_dtype
,
assign
from
.creation
import
_complex_to_real_dtype
,
assign
...
@@ -107,11 +107,7 @@ def shape(input):
...
@@ -107,11 +107,7 @@ def shape(input):
out
=
_C_ops
.
shape
(
input
)
out
=
_C_ops
.
shape
(
input
)
out
.
stop_gradient
=
True
out
.
stop_gradient
=
True
return
out
return
out
if
_in_legacy_dygraph
():
else
:
out
=
_legacy_C_ops
.
shape
(
input
)
out
.
stop_gradient
=
True
return
out
check_variable_and_dtype
(
check_variable_and_dtype
(
input
,
input
,
'input'
,
'input'
,
...
@@ -289,9 +285,7 @@ def real(x, name=None):
...
@@ -289,9 +285,7 @@ def real(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
real
(
x
)
return
_C_ops
.
real
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
real
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'complex64'
,
'complex128'
],
'real'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'complex64'
,
'complex128'
],
'real'
)
helper
=
LayerHelper
(
'real'
,
**
locals
())
helper
=
LayerHelper
(
'real'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
out
=
helper
.
create_variable_for_type_inference
(
...
@@ -336,9 +330,7 @@ def imag(x, name=None):
...
@@ -336,9 +330,7 @@ def imag(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
imag
(
x
)
return
_C_ops
.
imag
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
imag
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'complex64'
,
'complex128'
],
'imag'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'complex64'
,
'complex128'
],
'imag'
)
helper
=
LayerHelper
(
'imag'
,
**
locals
())
helper
=
LayerHelper
(
'imag'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
out
=
helper
.
create_variable_for_type_inference
(
...
...
python/paddle/tensor/creation.py
浏览文件 @
861fef52
...
@@ -33,7 +33,6 @@ from ..fluid.data_feeder import (
...
@@ -33,7 +33,6 @@ from ..fluid.data_feeder import (
from
..fluid.framework
import
(
from
..fluid.framework
import
(
Variable
,
Variable
,
_in_eager_without_dygraph_check
,
_in_eager_without_dygraph_check
,
_in_legacy_dygraph
,
device_guard
,
device_guard
,
)
)
from
..fluid.initializer
import
Constant
,
Initializer
from
..fluid.initializer
import
Constant
,
Initializer
...
@@ -43,7 +42,6 @@ from ..framework import (
...
@@ -43,7 +42,6 @@ from ..framework import (
LayerHelper
,
LayerHelper
,
_current_expected_place
,
_current_expected_place
,
_get_paddle_place
,
_get_paddle_place
,
_non_static_mode
,
convert_np_dtype_to_dtype_
,
convert_np_dtype_to_dtype_
,
core
,
core
,
in_dygraph_mode
,
in_dygraph_mode
,
...
@@ -324,11 +322,7 @@ def linspace(start, stop, num, dtype=None, name=None):
...
@@ -324,11 +322,7 @@ def linspace(start, stop, num, dtype=None, name=None):
dtype
,
dtype
,
_current_expected_place
(),
_current_expected_place
(),
)
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
linspace
(
tensor_start
,
tensor_stop
,
tensor_num
,
'dtype'
,
dtype
)
helper
=
LayerHelper
(
"linspace"
,
**
locals
())
helper
=
LayerHelper
(
"linspace"
,
**
locals
())
start_dtype
=
convert_dtype
(
tensor_start
.
dtype
)
start_dtype
=
convert_dtype
(
tensor_start
.
dtype
)
...
@@ -376,7 +370,11 @@ def linspace(start, stop, num, dtype=None, name=None):
...
@@ -376,7 +370,11 @@ def linspace(start, stop, num, dtype=None, name=None):
helper
.
append_op
(
helper
.
append_op
(
type
=
'linspace'
,
type
=
'linspace'
,
inputs
=
{
'Start'
:
tensor_start
,
'Stop'
:
tensor_stop
,
'Num'
:
tensor_num
},
inputs
=
{
'Start'
:
tensor_start
,
'Stop'
:
tensor_stop
,
'Num'
:
tensor_num
,
},
attrs
=
{
'dtype'
:
dtype
},
attrs
=
{
'dtype'
:
dtype
},
outputs
=
{
'Out'
:
[
out
]},
outputs
=
{
'Out'
:
[
out
]},
)
)
...
@@ -446,11 +444,11 @@ def logspace(start, stop, num, base=10.0, dtype=None, name=None):
...
@@ -446,11 +444,11 @@ def logspace(start, stop, num, base=10.0, dtype=None, name=None):
if
not
isinstance
(
base
,
Variable
):
if
not
isinstance
(
base
,
Variable
):
with
device_guard
(
"cpu"
):
with
device_guard
(
"cpu"
):
tensor_base
=
fill_constant
([
1
],
dtype
,
base
)
tensor_base
=
fill_constant
([
1
],
dtype
,
base
)
if
_non_static
_mode
():
if
in_dygraph
_mode
():
return
_legacy_C_ops
.
logspace
(
return
_legacy_C_ops
.
logspace
(
tensor_start
,
tensor_stop
,
tensor_num
,
tensor_base
,
'dtype'
,
dtype
tensor_start
,
tensor_stop
,
tensor_num
,
tensor_base
,
'dtype'
,
dtype
)
)
else
:
helper
=
LayerHelper
(
"logspace"
,
**
locals
())
helper
=
LayerHelper
(
"logspace"
,
**
locals
())
start_dtype
=
convert_dtype
(
tensor_start
.
dtype
)
start_dtype
=
convert_dtype
(
tensor_start
.
dtype
)
...
@@ -746,7 +744,7 @@ def to_tensor(data, dtype=None, place=None, stop_gradient=True):
...
@@ -746,7 +744,7 @@ def to_tensor(data, dtype=None, place=None, stop_gradient=True):
if
place
is
None
:
if
place
is
None
:
place
=
_current_expected_place
()
place
=
_current_expected_place
()
if
_non_static_mode
():
if
paddle
.
fluid
.
framework
.
_non_static_mode
():
return
_to_tensor_non_static
(
data
,
dtype
,
place
,
stop_gradient
)
return
_to_tensor_non_static
(
data
,
dtype
,
place
,
stop_gradient
)
# call assign for static graph
# call assign for static graph
...
@@ -785,32 +783,41 @@ def full_like(x, fill_value, dtype=None, name=None):
...
@@ -785,32 +783,41 @@ def full_like(x, fill_value, dtype=None, name=None):
# [[2. 2. 2.]
# [[2. 2. 2.]
# [2. 2. 2.]]
# [2. 2. 2.]]
"""
"""
if
dtype
is
None
:
if
dtype
is
None
:
dtype
=
x
.
dtype
dtype
=
x
.
dtype
else
:
else
:
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
full_like
(
x
,
fill_value
,
dtype
,
x
.
place
)
return
_C_ops
.
full_like
(
x
,
fill_value
,
dtype
,
x
.
place
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
fill_any_like
(
x
,
'value'
,
fill_value
,
'dtype'
,
dtype
)
helper
=
LayerHelper
(
"full_like"
,
**
locals
())
helper
=
LayerHelper
(
"full_like"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
[
'bool'
,
'float16'
,
'float32'
,
'float64'
,
'int16'
,
'int32'
,
'int64'
],
[
'bool'
,
'float16'
,
'float32'
,
'float64'
,
'int16'
,
'int32'
,
'int64'
,
],
'full_like'
,
'full_like'
,
)
)
check_dtype
(
check_dtype
(
dtype
,
dtype
,
'dtype'
,
'dtype'
,
[
'bool'
,
'float16'
,
'float32'
,
'float64'
,
'int16'
,
'int32'
,
'int64'
],
[
'bool'
,
'float16'
,
'float32'
,
'float64'
,
'int16'
,
'int32'
,
'int64'
,
],
'full_like/zeros_like/ones_like'
,
'full_like/zeros_like/ones_like'
,
)
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
dtype
)
...
@@ -1011,7 +1018,7 @@ def eye(num_rows, num_columns=None, dtype=None, name=None):
...
@@ -1011,7 +1018,7 @@ def eye(num_rows, num_columns=None, dtype=None, name=None):
"""
"""
def
_check_attr
(
attr
,
message
):
def
_check_attr
(
attr
,
message
):
if
isinstance
(
attr
,
((
Variable
,
core
.
VarBase
,
core
.
eager
.
Tensor
))):
if
isinstance
(
attr
,
((
Variable
,
core
.
eager
.
Tensor
))):
assert
len
(
attr
.
shape
)
==
1
and
attr
.
shape
[
0
]
in
[
1
,
-
1
]
assert
len
(
attr
.
shape
)
==
1
and
attr
.
shape
[
0
]
in
[
1
,
-
1
]
elif
not
isinstance
(
attr
,
int
)
or
attr
<
0
:
elif
not
isinstance
(
attr
,
int
)
or
attr
<
0
:
raise
TypeError
(
"{} should be a non-negative int."
.
format
(
message
))
raise
TypeError
(
"{} should be a non-negative int."
.
format
(
message
))
...
@@ -1027,16 +1034,10 @@ def eye(num_rows, num_columns=None, dtype=None, name=None):
...
@@ -1027,16 +1034,10 @@ def eye(num_rows, num_columns=None, dtype=None, name=None):
else
:
else
:
num_columns
=
num_rows
num_columns
=
num_rows
if
_non_static_mode
():
if
in_dygraph_mode
():
if
in_dygraph_mode
():
out
=
_C_ops
.
eye
(
out
=
_C_ops
.
eye
(
num_rows
,
num_columns
,
dtype
,
_current_expected_place
()
num_rows
,
num_columns
,
dtype
,
_current_expected_place
()
)
)
elif
_in_legacy_dygraph
():
out
=
_legacy_C_ops
.
eye
(
'dtype'
,
dtype
,
'num_rows'
,
num_rows
,
'num_columns'
,
num_columns
)
else
:
else
:
helper
=
LayerHelper
(
"eye"
,
**
locals
())
helper
=
LayerHelper
(
"eye"
,
**
locals
())
check_dtype
(
check_dtype
(
...
@@ -1211,14 +1212,12 @@ def arange(start=0, end=None, step=1, dtype=None, name=None):
...
@@ -1211,14 +1212,12 @@ def arange(start=0, end=None, step=1, dtype=None, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
arange
(
start
,
end
,
step
,
dtype
,
_current_expected_place
())
return
_C_ops
.
arange
(
start
,
end
,
step
,
dtype
,
_current_expected_place
())
else
:
if
_in_legacy_dygraph
():
out
=
_legacy_C_ops
.
range
(
start
,
end
,
step
)
out
.
stop_gradient
=
True
return
out
check_dtype
(
check_dtype
(
dtype
,
'dtype'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'range/arange'
dtype
,
'dtype'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'range/arange'
,
)
)
helper
=
LayerHelper
(
'range'
,
**
locals
())
helper
=
LayerHelper
(
'range'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
,
shape
=
out_shape
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
,
shape
=
out_shape
)
...
@@ -1328,11 +1327,7 @@ def tril(x, diagonal=0, name=None):
...
@@ -1328,11 +1327,7 @@ def tril(x, diagonal=0, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
tril
(
x
,
diagonal
,
True
)
return
_C_ops
.
tril
(
x
,
diagonal
,
True
)
else
:
if
_in_legacy_dygraph
():
op
=
getattr
(
_legacy_C_ops
,
'tril_triu'
)
return
op
(
x
,
'diagonal'
,
diagonal
,
"lower"
,
True
)
return
_tril_triu_op
(
LayerHelper
(
'tril'
,
**
locals
()))
return
_tril_triu_op
(
LayerHelper
(
'tril'
,
**
locals
()))
...
@@ -1394,11 +1389,7 @@ def triu(x, diagonal=0, name=None):
...
@@ -1394,11 +1389,7 @@ def triu(x, diagonal=0, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
triu
(
x
,
diagonal
,
False
)
return
_C_ops
.
triu
(
x
,
diagonal
,
False
)
else
:
if
_in_legacy_dygraph
():
op
=
getattr
(
_legacy_C_ops
,
'tril_triu'
)
return
op
(
x
,
'diagonal'
,
diagonal
,
"lower"
,
False
)
return
_tril_triu_op
(
LayerHelper
(
'triu'
,
**
locals
()))
return
_tril_triu_op
(
LayerHelper
(
'triu'
,
**
locals
()))
...
@@ -1437,18 +1428,16 @@ def meshgrid(*args, **kwargs):
...
@@ -1437,18 +1428,16 @@ def meshgrid(*args, **kwargs):
if
len
(
args
)
==
1
and
isinstance
(
args
[
0
],
(
list
,
tuple
)):
if
len
(
args
)
==
1
and
isinstance
(
args
[
0
],
(
list
,
tuple
)):
args
=
args
[
0
]
args
=
args
[
0
]
if
_in_legacy_dygraph
():
num
=
len
(
args
)
out
=
_legacy_C_ops
.
meshgrid
(
list
(
args
),
num
)
return
out
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
meshgrid
(
list
(
args
))
return
_C_ops
.
meshgrid
(
list
(
args
))
else
:
name
=
kwargs
.
get
(
"name"
,
None
)
name
=
kwargs
.
get
(
"name"
,
None
)
helper
=
LayerHelper
(
'meshgrid'
,
**
locals
())
helper
=
LayerHelper
(
'meshgrid'
,
**
locals
())
if
not
isinstance
(
args
,
(
list
,
tuple
)):
if
not
isinstance
(
args
,
(
list
,
tuple
)):
raise
TypeError
(
"The type of input args in meshgrid should be list."
)
raise
TypeError
(
"The type of input args in meshgrid should be list."
)
for
id
,
input_
in
enumerate
(
args
):
for
id
,
input_
in
enumerate
(
args
):
check_dtype
(
check_dtype
(
...
@@ -1555,27 +1544,14 @@ def diagflat(x, offset=0, name=None):
...
@@ -1555,27 +1544,14 @@ def diagflat(x, offset=0, name=None):
# [0, 0, 3, 0, 0],
# [0, 0, 3, 0, 0],
# [0, 0, 0, 4, 0]])
# [0, 0, 0, 4, 0]])
"""
"""
padding_value
=
0
if
in_dygraph_mode
():
if
in_dygraph_mode
():
if
len
(
x
.
shape
)
<=
1
:
if
len
(
x
.
shape
)
<=
1
:
return
_C_ops
.
diag
(
x
,
offset
,
padding_value
)
return
_C_ops
.
diag
(
x
,
offset
,
0
)
else
:
else
:
y
=
_C_ops
.
flatten
(
x
,
0
,
-
1
)
y
=
_C_ops
.
flatten
(
x
,
0
,
-
1
)
return
_C_ops
.
diag
(
y
,
offset
,
padding_value
)
return
_C_ops
.
diag
(
y
,
offset
,
0
)
if
_in_legacy_dygraph
():
if
len
(
x
.
shape
)
==
1
:
return
_legacy_C_ops
.
diag_v2
(
x
,
"offset"
,
offset
,
"padding_value"
,
padding_value
)
else
:
else
:
y
,
_
=
_legacy_C_ops
.
flatten_contiguous_range
(
padding_value
=
0
x
,
"start_axis"
,
0
,
"stop_axis"
,
-
1
)
return
_legacy_C_ops
.
diag_v2
(
y
,
"offset"
,
offset
,
"padding_value"
,
padding_value
)
check_type
(
x
,
'x'
,
(
Variable
),
'diagflat'
)
check_type
(
x
,
'x'
,
(
Variable
),
'diagflat'
)
check_dtype
(
check_dtype
(
x
.
dtype
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'diagflat'
x
.
dtype
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'diagflat'
...
@@ -1690,11 +1666,6 @@ def diag(x, offset=0, padding_value=0, name=None):
...
@@ -1690,11 +1666,6 @@ def diag(x, offset=0, padding_value=0, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
diag
(
x
,
offset
,
padding_value
)
return
_C_ops
.
diag
(
x
,
offset
,
padding_value
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
diag_v2
(
x
,
"offset"
,
offset
,
"padding_value"
,
padding_value
)
else
:
else
:
check_type
(
x
,
'x'
,
(
Variable
),
'diag_v2'
)
check_type
(
x
,
'x'
,
(
Variable
),
'diag_v2'
)
check_dtype
(
check_dtype
(
...
@@ -1782,15 +1753,7 @@ def empty(shape, dtype=None, name=None):
...
@@ -1782,15 +1753,7 @@ def empty(shape, dtype=None, name=None):
)
)
out
.
stop_gradient
=
True
out
.
stop_gradient
=
True
return
out
return
out
else
:
if
_in_legacy_dygraph
():
shape
=
utils
.
convert_shape_to_list
(
shape
)
out
=
_legacy_C_ops
.
empty
(
'shape'
,
shape
,
'dtype'
,
convert_np_dtype_to_dtype_
(
dtype
)
)
out
.
stop_gradient
=
True
return
out
helper
=
LayerHelper
(
"empty"
,
**
locals
())
helper
=
LayerHelper
(
"empty"
,
**
locals
())
inputs
=
{}
inputs
=
{}
...
@@ -1863,14 +1826,7 @@ def empty_like(x, dtype=None, name=None):
...
@@ -1863,14 +1826,7 @@ def empty_like(x, dtype=None, name=None):
)
)
out
.
stop_gradient
=
True
out
.
stop_gradient
=
True
return
out
return
out
else
:
if
_in_legacy_dygraph
():
out
=
_legacy_C_ops
.
empty
(
'shape'
,
x
.
shape
,
'dtype'
,
convert_np_dtype_to_dtype_
(
dtype
)
)
out
.
stop_gradient
=
True
return
out
helper
=
LayerHelper
(
"empty_like"
,
**
locals
())
helper
=
LayerHelper
(
"empty_like"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -1958,10 +1914,6 @@ def assign(x, output=None):
...
@@ -1958,10 +1914,6 @@ def assign(x, output=None):
output
=
_C_ops
.
assign
(
input
)
output
=
_C_ops
.
assign
(
input
)
else
:
else
:
_C_ops
.
assign_out_
(
input
,
output
)
_C_ops
.
assign_out_
(
input
,
output
)
elif
_in_legacy_dygraph
():
if
output
is
None
:
output
=
core
.
VarBase
()
_legacy_C_ops
.
assign
(
input
,
output
)
else
:
else
:
check_dtype
(
check_dtype
(
input
.
dtype
,
input
.
dtype
,
...
@@ -2060,18 +2012,6 @@ def assign(x, output=None):
...
@@ -2060,18 +2012,6 @@ def assign(x, output=None):
values
,
values
,
_current_expected_place
(),
_current_expected_place
(),
)
)
elif
_in_legacy_dygraph
():
if
output
is
None
:
output
=
core
.
VarBase
()
_legacy_C_ops
.
assign_value
(
output
,
'shape'
,
list
(
input
.
shape
),
'dtype'
,
dtype
,
value_name
,
values
,
)
else
:
else
:
if
output
is
None
:
if
output
is
None
:
output
=
helper
.
create_variable_for_type_inference
(
output
=
helper
.
create_variable_for_type_inference
(
...
@@ -2087,9 +2027,6 @@ def assign(x, output=None):
...
@@ -2087,9 +2027,6 @@ def assign(x, output=None):
},
},
)
)
if
is_inplace
and
_in_legacy_dygraph
():
output
.
_bump_inplace_version
()
return
output
return
output
...
@@ -2227,12 +2164,13 @@ def complex(real, imag, name=None):
...
@@ -2227,12 +2164,13 @@ def complex(real, imag, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
complex
(
real
,
imag
)
return
_C_ops
.
complex
(
real
,
imag
)
else
:
if
paddle
.
in_dynamic_mode
():
check_variable_and_dtype
(
return
paddle
.
_legacy_C_ops
.
complex
(
real
,
imag
)
real
,
'real'
,
[
'float32'
,
'float64'
],
'complex'
)
check_variable_and_dtype
(
real
,
'real'
,
[
'float32'
,
'float64'
],
'complex'
)
check_variable_and_dtype
(
check_variable_and_dtype
(
imag
,
'imag'
,
[
'float32'
,
'float64'
],
'complex'
)
imag
,
'imag'
,
[
'float32'
,
'float64'
],
'complex'
)
op_type
=
"complex"
op_type
=
"complex"
helper
=
LayerHelper
(
op_type
,
**
locals
())
helper
=
LayerHelper
(
op_type
,
**
locals
())
...
@@ -2242,7 +2180,9 @@ def complex(real, imag, name=None):
...
@@ -2242,7 +2180,9 @@ def complex(real, imag, name=None):
)
)
outputs
=
{
"Out"
:
out
}
outputs
=
{
"Out"
:
out
}
attrs
=
{}
attrs
=
{}
helper
.
append_op
(
type
=
op_type
,
inputs
=
inputs
,
attrs
=
attrs
,
outputs
=
outputs
)
helper
.
append_op
(
type
=
op_type
,
inputs
=
inputs
,
attrs
=
attrs
,
outputs
=
outputs
)
return
out
return
out
...
@@ -2291,6 +2231,17 @@ def tril_indices(row, col, offset=0, dtype='int64'):
...
@@ -2291,6 +2231,17 @@ def tril_indices(row, col, offset=0, dtype='int64'):
# [[ 1, 2, 2, 3, 3, 3],
# [[ 1, 2, 2, 3, 3, 3],
# [ 0, 0, 1, 0, 1, 2]]
# [ 0, 0, 1, 0, 1, 2]]
"""
"""
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
if
in_dygraph_mode
():
if
col
is
None
:
col
=
row
out
=
_C_ops
.
tril_indices
(
row
,
col
,
offset
,
dtype
,
_current_expected_place
()
)
return
out
else
:
if
not
isinstance
(
row
,
int
)
or
row
<
0
:
if
not
isinstance
(
row
,
int
)
or
row
<
0
:
raise
TypeError
(
"row should be a non-negative int"
)
raise
TypeError
(
"row should be a non-negative int"
)
...
@@ -2303,22 +2254,6 @@ def tril_indices(row, col, offset=0, dtype='int64'):
...
@@ -2303,22 +2254,6 @@ def tril_indices(row, col, offset=0, dtype='int64'):
if
not
isinstance
(
offset
,
int
):
if
not
isinstance
(
offset
,
int
):
raise
TypeError
(
"offset should be a int"
)
raise
TypeError
(
"offset should be a int"
)
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
if
in_dygraph_mode
():
out
=
_C_ops
.
tril_indices
(
row
,
col
,
offset
,
dtype
,
_current_expected_place
()
)
return
out
if
_in_legacy_dygraph
():
out
=
_legacy_C_ops
.
tril_indices
(
'rows'
,
row
,
'cols'
,
col
,
'offset'
,
offset
,
"dtype"
,
dtype
)
return
out
else
:
helper
=
LayerHelper
(
"tril_indices"
,
**
locals
())
helper
=
LayerHelper
(
"tril_indices"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
dtype
)
...
@@ -2375,6 +2310,17 @@ def triu_indices(row, col=None, offset=0, dtype='int64'):
...
@@ -2375,6 +2310,17 @@ def triu_indices(row, col=None, offset=0, dtype='int64'):
# [[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3],
# [[0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 3, 3],
# [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 2, 3]]
# [0, 1, 2, 3, 0, 1, 2, 3, 1, 2, 3, 2, 3]]
"""
"""
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
if
in_dygraph_mode
():
if
col
is
None
:
col
=
row
out
=
_C_ops
.
triu_indices
(
row
,
col
,
offset
,
dtype
,
_current_expected_place
()
)
return
out
else
:
if
not
isinstance
(
row
,
int
)
or
row
<
0
:
if
not
isinstance
(
row
,
int
)
or
row
<
0
:
raise
TypeError
(
"row should be a non-negative int"
)
raise
TypeError
(
"row should be a non-negative int"
)
...
@@ -2387,22 +2333,6 @@ def triu_indices(row, col=None, offset=0, dtype='int64'):
...
@@ -2387,22 +2333,6 @@ def triu_indices(row, col=None, offset=0, dtype='int64'):
if
not
isinstance
(
offset
,
int
):
if
not
isinstance
(
offset
,
int
):
raise
TypeError
(
"offset should be a int"
)
raise
TypeError
(
"offset should be a int"
)
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
if
in_dygraph_mode
():
out
=
_C_ops
.
triu_indices
(
row
,
col
,
offset
,
dtype
,
_current_expected_place
()
)
return
out
if
_in_legacy_dygraph
():
out
=
_legacy_C_ops
.
triu_indices
(
'row'
,
row
,
'col'
,
col
,
'offset'
,
offset
,
"dtype"
,
dtype
)
return
out
else
:
helper
=
LayerHelper
(
"triu_indices"
,
**
locals
())
helper
=
LayerHelper
(
"triu_indices"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
dtype
)
...
...
python/paddle/tensor/einsum.py
浏览文件 @
861fef52
...
@@ -20,10 +20,10 @@ import string
...
@@ -20,10 +20,10 @@ import string
import
numpy
as
np
import
numpy
as
np
import
opt_einsum
import
opt_einsum
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle
import
_C_ops
from
..fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
..fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
..fluid.framework
import
_in_legacy_dygraph
,
in_dygraph_mode
from
..fluid.framework
import
in_dygraph_mode
from
..fluid.layer_helper
import
LayerHelper
from
..fluid.layer_helper
import
LayerHelper
from
.linalg
import
matmul
,
transpose
from
.linalg
import
matmul
,
transpose
from
.manipulation
import
reshape
,
squeeze
,
unsqueeze
from
.manipulation
import
reshape
,
squeeze
,
unsqueeze
...
@@ -829,18 +829,15 @@ def gen_einsum_op(equation, *operands):
...
@@ -829,18 +829,15 @@ def gen_einsum_op(equation, *operands):
"""
"""
EinsumOp Python Interface:
EinsumOp Python Interface:
"""
"""
assert
len
(
operands
)
<=
2
,
"Only support two operands in EinsumOp."
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
einsum
(
operands
,
equation
)[
0
]
return
_C_ops
.
einsum
(
operands
,
equation
)[
0
]
else
:
if
_in_legacy_dygraph
():
assert
len
(
operands
)
<=
2
,
"Only support two operands in EinsumOp."
# dygraph
return
_legacy_C_ops
.
einsum
(
operands
,
len
(
operands
),
len
(
operands
),
'equation'
,
equation
)[
0
]
for
inp
in
operands
:
for
inp
in
operands
:
check_variable_and_dtype
(
inp
,
'dtype'
,
[
'float32'
,
'float64'
],
'einsum'
)
check_variable_and_dtype
(
inp
,
'dtype'
,
[
'float32'
,
'float64'
],
'einsum'
)
check_type
(
equation
,
'equation'
,
str
,
'einsum'
)
check_type
(
equation
,
'equation'
,
str
,
'einsum'
)
helper
=
LayerHelper
(
'einsum'
,
**
locals
())
helper
=
LayerHelper
(
'einsum'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
operands
[
0
].
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
operands
[
0
].
dtype
)
...
...
python/paddle/tensor/layer_function_generator.py
浏览文件 @
861fef52
...
@@ -24,7 +24,6 @@ from ..fluid.proto import framework_pb2
...
@@ -24,7 +24,6 @@ from ..fluid.proto import framework_pb2
from
..framework
import
(
from
..framework
import
(
LayerHelper
,
LayerHelper
,
OpProtoHolder
,
OpProtoHolder
,
_non_static_mode
,
convert_np_dtype_to_dtype_
,
convert_np_dtype_to_dtype_
,
core
,
core
,
in_dygraph_mode
,
in_dygraph_mode
,
...
@@ -274,15 +273,16 @@ def generate_activation_fn(op_type):
...
@@ -274,15 +273,16 @@ def generate_activation_fn(op_type):
op_proto
=
OpProtoHolder
.
instance
().
get_op_proto
(
op_type
)
op_proto
=
OpProtoHolder
.
instance
().
get_op_proto
(
op_type
)
def
func
(
x
,
name
=
None
):
def
func
(
x
,
name
=
None
):
if
in_dygraph_mode
()
and
hasattr
(
_C_ops
,
op_type
):
if
in_dygraph_mode
():
if
hasattr
(
_C_ops
,
op_type
):
op
=
getattr
(
_C_ops
,
op_type
)
op
=
getattr
(
_C_ops
,
op_type
)
return
op
(
x
)
return
op
(
x
)
else
:
# TODO(dev): Because some ops' yaml has not been migrated.
# TODO(dev): Because some ops' yaml has not been migrated.
# Replace it with _in_legacy_dygraph while all yaml work is done.
# Replace it with _C_ops while all yaml work is done.
if
_non_static_mode
():
op
=
getattr
(
_legacy_C_ops
,
op_type
)
op
=
getattr
(
_legacy_C_ops
,
op_type
)
return
op
(
x
)
return
op
(
x
)
else
:
if
op_type
not
in
[
"abs"
,
"exp"
,
"square"
]:
if
op_type
not
in
[
"abs"
,
"exp"
,
"square"
]:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
op_type
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
op_type
...
@@ -307,7 +307,9 @@ def generate_activation_fn(op_type):
...
@@ -307,7 +307,9 @@ def generate_activation_fn(op_type):
helper
=
LayerHelper
(
op_type
,
**
locals
())
helper
=
LayerHelper
(
op_type
,
**
locals
())
output
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
output
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
op_type
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
output
})
helper
.
append_op
(
type
=
op_type
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
output
}
)
return
output
return
output
func
.
__name__
=
op_type
func
.
__name__
=
op_type
...
@@ -332,12 +334,14 @@ def generate_inplace_fn(inplace_op_type):
...
@@ -332,12 +334,14 @@ def generate_inplace_fn(inplace_op_type):
origin_op_type
=
inplace_op_type
[:
-
1
]
origin_op_type
=
inplace_op_type
[:
-
1
]
def
func
(
x
,
name
=
None
):
def
func
(
x
,
name
=
None
):
if
in_dygraph_mode
()
and
hasattr
(
_C_ops
,
inplace_op_type
):
if
in_dygraph_mode
():
if
hasattr
(
_C_ops
,
inplace_op_type
):
op
=
getattr
(
_C_ops
,
inplace_op_type
)
op
=
getattr
(
_C_ops
,
inplace_op_type
)
return
op
(
x
)
return
op
(
x
)
if
_non_static_mode
()
:
else
:
op
=
getattr
(
_legacy_C_ops
,
inplace_op_type
)
op
=
getattr
(
_legacy_C_ops
,
inplace_op_type
)
return
op
(
x
)
return
op
(
x
)
else
:
warnings
.
warn
(
warnings
.
warn
(
"In static mode, {}() is the same as {}() and does not perform inplace operation."
.
format
(
"In static mode, {}() is the same as {}() and does not perform inplace operation."
.
format
(
inplace_op_type
,
origin_op_type
inplace_op_type
,
origin_op_type
...
...
python/paddle/tensor/linalg.py
浏览文件 @
861fef52
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
import
numpy
as
np
import
numpy
as
np
import
paddle
import
paddle
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle
import
_C_ops
from
paddle.common_ops_import
import
VarDesc
from
paddle.common_ops_import
import
VarDesc
from
..fluid.data_feeder
import
(
from
..fluid.data_feeder
import
(
...
@@ -23,8 +23,7 @@ from ..fluid.data_feeder import (
...
@@ -23,8 +23,7 @@ from ..fluid.data_feeder import (
check_type
,
check_type
,
check_variable_and_dtype
,
check_variable_and_dtype
,
)
)
from
..fluid.framework
import
_in_legacy_dygraph
from
..framework
import
LayerHelper
,
in_dygraph_mode
from
..framework
import
LayerHelper
,
_non_static_mode
,
in_dygraph_mode
from
..static
import
Variable
from
..static
import
Variable
from
.creation
import
full
from
.creation
import
full
from
.logic
import
logical_not
from
.logic
import
logical_not
...
@@ -90,10 +89,6 @@ def transpose(x, perm, name=None):
...
@@ -90,10 +89,6 @@ def transpose(x, perm, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
transpose
(
x
,
perm
)
return
_C_ops
.
transpose
(
x
,
perm
)
else
:
else
:
if
_in_legacy_dygraph
():
out
,
_
=
_legacy_C_ops
.
transpose2
(
x
,
'axis'
,
perm
)
return
out
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
...
@@ -235,12 +230,7 @@ def matmul(x, y, transpose_x=False, transpose_y=False, name=None):
...
@@ -235,12 +230,7 @@ def matmul(x, y, transpose_x=False, transpose_y=False, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
matmul
(
x
,
y
,
transpose_x
,
transpose_y
)
return
_C_ops
.
matmul
(
x
,
y
,
transpose_x
,
transpose_y
)
else
:
if
_in_legacy_dygraph
():
op_type
=
'matmul_v2'
op
=
getattr
(
_legacy_C_ops
,
op_type
)
return
op
(
x
,
y
,
'trans_x'
,
transpose_x
,
'trans_y'
,
transpose_y
)
attrs
=
{
attrs
=
{
'trans_x'
:
transpose_x
,
'trans_x'
:
transpose_x
,
'trans_y'
:
transpose_y
,
'trans_y'
:
transpose_y
,
...
@@ -252,7 +242,13 @@ def matmul(x, y, transpose_x=False, transpose_y=False, name=None):
...
@@ -252,7 +242,13 @@ def matmul(x, y, transpose_x=False, transpose_y=False, name=None):
check_variable_and_dtype
(
check_variable_and_dtype
(
val
,
val
,
name
,
name
,
[
'float16'
,
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
[
'float16'
,
'float32'
,
'float64'
,
'complex64'
,
'complex128'
,
],
'matmul'
,
'matmul'
,
)
)
...
@@ -373,14 +369,7 @@ def norm(x, p='fro', axis=None, keepdim=False, name=None):
...
@@ -373,14 +369,7 @@ def norm(x, p='fro', axis=None, keepdim=False, name=None):
if
dim
is
None
:
if
dim
is
None
:
return
_C_ops
.
frobenius_norm
(
input
,
[],
keepdim
,
True
)
return
_C_ops
.
frobenius_norm
(
input
,
[],
keepdim
,
True
)
return
_C_ops
.
frobenius_norm
(
input
,
dim
,
keepdim
,
False
)
return
_C_ops
.
frobenius_norm
(
input
,
dim
,
keepdim
,
False
)
if
_in_legacy_dygraph
():
else
:
if
dim
is
None
:
return
_legacy_C_ops
.
frobenius_norm
(
input
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
True
)
return
_legacy_C_ops
.
frobenius_norm
(
input
,
'dim'
,
dim
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
False
)
attrs
=
{
'dim'
:
dim
,
'keep_dim'
:
keepdim
,
'reduce_all'
:
False
}
attrs
=
{
'dim'
:
dim
,
'keep_dim'
:
keepdim
,
'reduce_all'
:
False
}
if
dim
is
None
:
if
dim
is
None
:
attrs
[
'reduce_all'
]
=
True
attrs
[
'reduce_all'
]
=
True
...
@@ -416,22 +405,7 @@ def norm(x, p='fro', axis=None, keepdim=False, name=None):
...
@@ -416,22 +405,7 @@ def norm(x, p='fro', axis=None, keepdim=False, name=None):
if
axis
is
None
:
if
axis
is
None
:
axis
=
-
1
axis
=
-
1
return
_C_ops
.
p_norm
(
input
,
porder
,
axis
,
1e-12
,
keepdim
,
asvector
)
return
_C_ops
.
p_norm
(
input
,
porder
,
axis
,
1e-12
,
keepdim
,
asvector
)
else
:
if
_in_legacy_dygraph
():
if
axis
is
None
:
axis
=
-
1
return
_legacy_C_ops
.
p_norm
(
input
,
'porder'
,
porder
,
'axis'
,
axis
,
'keepdim'
,
keepdim
,
'asvector'
,
asvector
,
)
if
porder
is
not
None
:
if
porder
is
not
None
:
check_type
(
porder
,
'porder'
,
(
float
,
int
),
'p_norm'
)
check_type
(
porder
,
'porder'
,
(
float
,
int
),
'p_norm'
)
if
axis
is
not
None
:
if
axis
is
not
None
:
...
@@ -469,17 +443,21 @@ def norm(x, p='fro', axis=None, keepdim=False, name=None):
...
@@ -469,17 +443,21 @@ def norm(x, p='fro', axis=None, keepdim=False, name=None):
return
_C_ops
.
max
(
out
,
axis
,
keepdim
)
return
_C_ops
.
max
(
out
,
axis
,
keepdim
)
else
:
else
:
return
_C_ops
.
min
(
out
,
axis
,
keepdim
)
return
_C_ops
.
min
(
out
,
axis
,
keepdim
)
else
:
helper
=
LayerHelper
(
'inf_norm'
,
**
locals
())
helper
=
LayerHelper
(
'inf_norm'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
()
dtype
=
helper
.
input_dtype
()
)
)
helper
.
append_op
(
type
=
'abs'
,
inputs
=
{
'X'
:
input
},
outputs
=
{
'Out'
:
out
})
helper
.
append_op
(
type
=
'abs'
,
inputs
=
{
'X'
:
input
},
outputs
=
{
'Out'
:
out
}
)
reduce_out
=
helper
.
create_variable_for_type_inference
(
reduce_out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
()
dtype
=
helper
.
input_dtype
()
)
)
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
or
asvector
else
False
reduce_all
=
(
True
if
axis
is
None
or
axis
==
[]
or
asvector
else
False
)
axis
=
axis
if
axis
is
not
None
and
axis
!=
[]
else
[
0
]
axis
=
axis
if
axis
is
not
None
and
axis
!=
[]
else
[
0
]
reduce_type
=
(
reduce_type
=
(
...
@@ -489,7 +467,11 @@ def norm(x, p='fro', axis=None, keepdim=False, name=None):
...
@@ -489,7 +467,11 @@ def norm(x, p='fro', axis=None, keepdim=False, name=None):
type
=
reduce_type
,
type
=
reduce_type
,
inputs
=
{
'X'
:
out
},
inputs
=
{
'X'
:
out
},
outputs
=
{
'Out'
:
reduce_out
},
outputs
=
{
'Out'
:
reduce_out
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
keepdim
,
'reduce_all'
:
reduce_all
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
keepdim
,
'reduce_all'
:
reduce_all
,
},
)
)
return
reduce_out
return
reduce_out
...
@@ -846,40 +828,6 @@ def cond(x, p=None, name=None):
...
@@ -846,40 +828,6 @@ def cond(x, p=None, name=None):
return
_C_ops
.
max
(
sum_out
,
[
-
1
],
False
)
return
_C_ops
.
max
(
sum_out
,
[
-
1
],
False
)
if
porder
==
-
1
or
porder
==
-
np
.
inf
:
if
porder
==
-
1
or
porder
==
-
np
.
inf
:
return
_C_ops
.
min
(
sum_out
,
[
-
1
],
False
)
return
_C_ops
.
min
(
sum_out
,
[
-
1
],
False
)
elif
_in_legacy_dygraph
():
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
else
False
axis
=
axis
if
axis
is
not
None
and
axis
!=
[]
else
[
0
]
abs_out
=
_legacy_C_ops
.
abs
(
input
)
sum_out
=
_legacy_C_ops
.
reduce_sum
(
abs_out
,
'dim'
,
axis
,
'keepdim'
,
False
,
'reduce_all'
,
reduce_all
,
)
if
porder
==
1
or
porder
==
np
.
inf
:
return
_legacy_C_ops
.
reduce_max
(
sum_out
,
'dim'
,
[
-
1
],
'keepdim'
,
False
,
'reduce_all'
,
reduce_all
,
)
if
porder
==
-
1
or
porder
==
-
np
.
inf
:
return
_legacy_C_ops
.
reduce_min
(
sum_out
,
'dim'
,
[
-
1
],
'keepdim'
,
False
,
'reduce_all'
,
reduce_all
,
)
else
:
else
:
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
else
False
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
else
False
axis
=
axis
if
axis
is
not
None
and
axis
!=
[]
else
[
0
]
axis
=
axis
if
axis
is
not
None
and
axis
!=
[]
else
[
0
]
...
@@ -940,29 +888,7 @@ def cond(x, p=None, name=None):
...
@@ -940,29 +888,7 @@ def cond(x, p=None, name=None):
sum_out_1
=
_C_ops
.
sum
(
pow_out
,
axis
,
None
,
False
)
sum_out_1
=
_C_ops
.
sum
(
pow_out
,
axis
,
None
,
False
)
sum_out_2
=
_C_ops
.
sum
(
sum_out_1
,
axis
,
None
,
False
)
sum_out_2
=
_C_ops
.
sum
(
sum_out_1
,
axis
,
None
,
False
)
return
_C_ops
.
pow
(
sum_out_2
,
float
(
1.0
/
porder
))
return
_C_ops
.
pow
(
sum_out_2
,
float
(
1.0
/
porder
))
elif
paddle
.
in_dynamic_mode
():
else
:
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
else
False
pow_out
=
_legacy_C_ops
.
pow
(
input
,
'factor'
,
porder
)
sum_out_1
=
_legacy_C_ops
.
reduce_sum
(
pow_out
,
'dim'
,
axis
,
'keepdim'
,
False
,
'reduce_all'
,
reduce_all
,
)
sum_out_2
=
_legacy_C_ops
.
reduce_sum
(
sum_out_1
,
'dim'
,
axis
,
'keepdim'
,
False
,
'reduce_all'
,
reduce_all
,
)
return
_legacy_C_ops
.
pow
(
sum_out_2
,
'factor'
,
float
(
1.0
/
porder
))
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
else
False
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
else
False
block
=
LayerHelper
(
'norm'
,
**
locals
())
block
=
LayerHelper
(
'norm'
,
**
locals
())
pow_out
=
block
.
create_variable_for_type_inference
(
pow_out
=
block
.
create_variable_for_type_inference
(
...
@@ -987,13 +913,21 @@ def cond(x, p=None, name=None):
...
@@ -987,13 +913,21 @@ def cond(x, p=None, name=None):
type
=
'reduce_sum'
,
type
=
'reduce_sum'
,
inputs
=
{
'X'
:
pow_out
},
inputs
=
{
'X'
:
pow_out
},
outputs
=
{
'Out'
:
sum_out_1
},
outputs
=
{
'Out'
:
sum_out_1
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
False
,
'reduce_all'
:
reduce_all
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
False
,
'reduce_all'
:
reduce_all
,
},
)
)
block
.
append_op
(
block
.
append_op
(
type
=
'reduce_sum'
,
type
=
'reduce_sum'
,
inputs
=
{
'X'
:
sum_out_1
},
inputs
=
{
'X'
:
sum_out_1
},
outputs
=
{
'Out'
:
sum_out_2
},
outputs
=
{
'Out'
:
sum_out_2
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
False
,
'reduce_all'
:
reduce_all
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
False
,
'reduce_all'
:
reduce_all
,
},
)
)
block
.
append_op
(
block
.
append_op
(
type
=
'pow'
,
type
=
'pow'
,
...
@@ -1009,48 +943,19 @@ def cond(x, p=None, name=None):
...
@@ -1009,48 +943,19 @@ def cond(x, p=None, name=None):
Calculate the matrix norm, which is related to singular values, of a matrix
Calculate the matrix norm, which is related to singular values, of a matrix
or batches of matrices, including nuclear norm, 2-norm and (-2)-norm.
or batches of matrices, including nuclear norm, 2-norm and (-2)-norm.
"""
"""
if
not
in_dygraph_mode
():
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
else
False
u
,
s
,
vh
=
svd
(
input
,
full_matrices
=
False
)
u
,
s
,
vh
=
svd
(
input
,
full_matrices
=
False
)
if
_non_static_mode
():
if
porder
==
"nuc"
:
if
in_dygraph_mode
():
if
in_dygraph_mode
():
if
porder
==
"nuc"
:
return
_C_ops
.
sum
(
s
,
axis
,
None
,
False
)
return
_C_ops
.
sum
(
s
,
axis
,
None
,
False
)
else
:
return
_legacy_C_ops
.
reduce_sum
(
s
,
'dim'
,
axis
,
'keepdim'
,
False
,
'reduce_all'
,
reduce_all
,
)
if
in_dygraph_mode
():
max_out
=
_C_ops
.
max
(
s
,
axis
,
False
)
max_out
=
_C_ops
.
max
(
s
,
axis
,
False
)
min_out
=
_C_ops
.
min
(
s
,
axis
,
False
)
min_out
=
_C_ops
.
min
(
s
,
axis
,
False
)
if
porder
==
2
:
if
porder
==
2
:
return
_C_ops
.
divide
(
max_out
,
min_out
)
return
_C_ops
.
divide
(
max_out
,
min_out
)
if
porder
==
-
2
:
if
porder
==
-
2
:
return
_C_ops
.
divide
(
min_out
,
max_out
)
return
_C_ops
.
divide
(
min_out
,
max_out
)
else
:
else
:
max_out
=
_legacy_C_ops
.
reduce_max
(
reduce_all
=
True
if
axis
is
None
or
axis
==
[]
else
False
s
,
'dim'
,
axis
,
'keepdim'
,
False
,
'reduce_all'
,
reduce_all
)
min_out
=
_legacy_C_ops
.
reduce_min
(
s
,
'dim'
,
axis
,
'keepdim'
,
False
,
'reduce_all'
,
reduce_all
)
if
porder
==
2
:
return
_legacy_C_ops
.
elementwise_div
(
max_out
,
min_out
,
'aixs'
,
axis
,
'use_mkldnn'
,
False
)
if
porder
==
-
2
:
return
_legacy_C_ops
.
elementwise_div
(
min_out
,
max_out
,
'aixs'
,
axis
,
'use_mkldnn'
,
False
)
block
=
LayerHelper
(
'norm'
,
**
locals
())
block
=
LayerHelper
(
'norm'
,
**
locals
())
out
=
block
.
create_variable_for_type_inference
(
out
=
block
.
create_variable_for_type_inference
(
dtype
=
block
.
input_dtype
()
dtype
=
block
.
input_dtype
()
...
@@ -1077,13 +982,21 @@ def cond(x, p=None, name=None):
...
@@ -1077,13 +982,21 @@ def cond(x, p=None, name=None):
type
=
'reduce_max'
,
type
=
'reduce_max'
,
inputs
=
{
'X'
:
s
},
inputs
=
{
'X'
:
s
},
outputs
=
{
'Out'
:
max_out
},
outputs
=
{
'Out'
:
max_out
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
False
,
'reduce_all'
:
reduce_all
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
False
,
'reduce_all'
:
reduce_all
,
},
)
)
block
.
append_op
(
block
.
append_op
(
type
=
'reduce_min'
,
type
=
'reduce_min'
,
inputs
=
{
'X'
:
s
},
inputs
=
{
'X'
:
s
},
outputs
=
{
'Out'
:
min_out
},
outputs
=
{
'Out'
:
min_out
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
False
,
'reduce_all'
:
reduce_all
},
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
False
,
'reduce_all'
:
reduce_all
,
},
)
)
if
porder
==
2
:
if
porder
==
2
:
block
.
append_op
(
block
.
append_op
(
...
@@ -1103,7 +1016,7 @@ def cond(x, p=None, name=None):
...
@@ -1103,7 +1016,7 @@ def cond(x, p=None, name=None):
return
out
return
out
def
empty_tensor
(
input
,
shape
):
def
empty_tensor
(
input
,
shape
):
if
paddle
.
in_dynamic
_mode
():
if
in_dygraph
_mode
():
return
input
.
reshape
(
shape
)
return
input
.
reshape
(
shape
)
raise
ValueError
(
"only support x is nonempty tensor in static mode"
)
raise
ValueError
(
"only support x is nonempty tensor in static mode"
)
...
@@ -1186,9 +1099,7 @@ def dot(x, y, name=None):
...
@@ -1186,9 +1099,7 @@ def dot(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
dot
(
x
,
y
)
return
_C_ops
.
dot
(
x
,
y
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
dot
(
x
,
y
)
op_type
=
'dot'
op_type
=
'dot'
assert
x
is
not
None
,
'x cannot be None in {}'
.
format
(
op_type
)
assert
x
is
not
None
,
'x cannot be None in {}'
.
format
(
op_type
)
...
@@ -1389,15 +1300,7 @@ def t(input, name=None):
...
@@ -1389,15 +1300,7 @@ def t(input, name=None):
perm
=
[
1
,
0
]
perm
=
[
1
,
0
]
out
=
_C_ops
.
transpose
(
input
,
perm
)
out
=
_C_ops
.
transpose
(
input
,
perm
)
return
out
return
out
else
:
if
_in_legacy_dygraph
():
if
len
(
input
.
shape
)
==
1
:
return
input
# 2-D tensor
perm
=
[
1
,
0
]
out
,
_
=
_legacy_C_ops
.
transpose2
(
input
,
'axis'
,
perm
)
return
out
check_variable_and_dtype
(
check_variable_and_dtype
(
input
,
input
,
'input'
,
'input'
,
...
@@ -1461,12 +1364,6 @@ def cross(x, y, axis=9, name=None):
...
@@ -1461,12 +1364,6 @@ def cross(x, y, axis=9, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
axis
=
K_DEFAULT_DIM
if
axis
is
None
else
axis
axis
=
K_DEFAULT_DIM
if
axis
is
None
else
axis
return
_C_ops
.
cross
(
x
,
y
,
axis
)
return
_C_ops
.
cross
(
x
,
y
,
axis
)
else
:
if
_in_legacy_dygraph
():
if
axis
is
not
None
:
return
_legacy_C_ops
.
cross
(
x
,
y
,
'dim'
,
axis
)
else
:
return
_legacy_C_ops
.
cross
(
x
,
y
)
else
:
else
:
helper
=
LayerHelper
(
"cross"
,
**
locals
())
helper
=
LayerHelper
(
"cross"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
...
@@ -1520,10 +1417,7 @@ def cholesky(x, upper=False, name=None):
...
@@ -1520,10 +1417,7 @@ def cholesky(x, upper=False, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
cholesky
(
x
,
upper
)
return
_C_ops
.
cholesky
(
x
,
upper
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
cholesky
(
x
,
"upper"
,
upper
)
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'cholesky'
)
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'cholesky'
)
check_type
(
upper
,
'upper'
,
bool
,
'cholesky'
)
check_type
(
upper
,
'upper'
,
bool
,
'cholesky'
)
helper
=
LayerHelper
(
'cholesky'
,
**
locals
())
helper
=
LayerHelper
(
'cholesky'
,
**
locals
())
...
@@ -1594,34 +1488,7 @@ def matrix_rank(x, tol=None, hermitian=False, name=None):
...
@@ -1594,34 +1488,7 @@ def matrix_rank(x, tol=None, hermitian=False, name=None):
tol_attr
=
float
(
tol
)
tol_attr
=
float
(
tol
)
use_default_tol
=
False
use_default_tol
=
False
return
_C_ops
.
matrix_rank
(
x
,
tol_attr
,
hermitian
,
use_default_tol
)
return
_C_ops
.
matrix_rank
(
x
,
tol_attr
,
hermitian
,
use_default_tol
)
if
_in_legacy_dygraph
():
if
tol
is
None
:
tol_tensor
=
None
tol_attr
=
0.0
use_default_tol
=
True
elif
isinstance
(
tol
,
Variable
):
if
tol
.
dtype
!=
x
.
dtype
:
tol_tensor
=
cast
(
tol
,
x
.
dtype
)
else
:
else
:
tol_tensor
=
tol
tol_attr
=
0.0
use_default_tol
=
False
else
:
tol_tensor
=
None
tol_attr
=
float
(
tol
)
use_default_tol
=
False
return
_legacy_C_ops
.
matrix_rank
(
x
,
tol_tensor
,
"tol"
,
tol_attr
,
'hermitian'
,
hermitian
,
'use_default_tol'
,
use_default_tol
,
)
inputs
=
{}
inputs
=
{}
attrs
=
{}
attrs
=
{}
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'matrix_rank'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'matrix_rank'
)
...
@@ -1711,13 +1578,12 @@ def bmm(x, y, name=None):
...
@@ -1711,13 +1578,12 @@ def bmm(x, y, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
bmm
(
x
,
y
)
return
_C_ops
.
bmm
(
x
,
y
)
else
:
if
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
bmm
(
x
,
y
)
helper
=
LayerHelper
(
'bmm'
,
**
locals
())
helper
=
LayerHelper
(
'bmm'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'bmm'
,
inputs
=
{
'X'
:
x
,
'Y'
:
y
},
outputs
=
{
'Out'
:
out
})
helper
.
append_op
(
type
=
'bmm'
,
inputs
=
{
'X'
:
x
,
'Y'
:
y
},
outputs
=
{
'Out'
:
out
}
)
return
out
return
out
...
@@ -1748,12 +1614,7 @@ def histogram(input, bins=100, min=0, max=0, name=None):
...
@@ -1748,12 +1614,7 @@ def histogram(input, bins=100, min=0, max=0, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
histogram
(
input
,
bins
,
min
,
max
)
return
_C_ops
.
histogram
(
input
,
bins
,
min
,
max
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
histogram
(
input
,
"bins"
,
bins
,
"min"
,
min
,
"max"
,
max
)
helper
=
LayerHelper
(
'histogram'
,
**
locals
())
helper
=
LayerHelper
(
'histogram'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
input
,
'X'
,
[
'int32'
,
'int64'
,
'float32'
,
'float64'
],
'histogram'
input
,
'X'
,
[
'int32'
,
'int64'
,
'float32'
,
'float64'
],
'histogram'
...
@@ -1800,9 +1661,7 @@ def bincount(x, weights=None, minlength=0, name=None):
...
@@ -1800,9 +1661,7 @@ def bincount(x, weights=None, minlength=0, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
bincount
(
x
,
weights
,
minlength
)
return
_C_ops
.
bincount
(
x
,
weights
,
minlength
)
elif
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
bincount
(
x
,
weights
,
"minlength"
,
minlength
)
helper
=
LayerHelper
(
'bincount'
,
**
locals
())
helper
=
LayerHelper
(
'bincount'
,
**
locals
())
check_variable_and_dtype
(
x
,
'X'
,
[
'int32'
,
'int64'
],
'bincount'
)
check_variable_and_dtype
(
x
,
'X'
,
[
'int32'
,
'int64'
],
'bincount'
)
...
@@ -1859,10 +1718,6 @@ def mv(x, vec, name=None):
...
@@ -1859,10 +1718,6 @@ def mv(x, vec, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
mv
(
x
,
vec
)
return
_C_ops
.
mv
(
x
,
vec
)
else
:
else
:
if
_in_legacy_dygraph
():
out
=
_legacy_C_ops
.
mv
(
x
,
vec
)
return
out
else
:
def
__check_input
(
x
,
vec
):
def
__check_input
(
x
,
vec
):
var_names
=
{
'x'
:
x
,
'vec'
:
vec
}
var_names
=
{
'x'
:
x
,
'vec'
:
vec
}
...
@@ -1927,10 +1782,7 @@ def det(x, name=None):
...
@@ -1927,10 +1782,7 @@ def det(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
det
(
x
)
return
_C_ops
.
det
(
x
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
determinant
(
x
)
check_dtype
(
x
.
dtype
,
'Input'
,
[
'float32'
,
'float64'
],
'det'
)
check_dtype
(
x
.
dtype
,
'Input'
,
[
'float32'
,
'float64'
],
'det'
)
input_shape
=
list
(
x
.
shape
)
input_shape
=
list
(
x
.
shape
)
...
@@ -1989,10 +1841,7 @@ def slogdet(x, name=None):
...
@@ -1989,10 +1841,7 @@ def slogdet(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
slogdet
(
x
)
return
_C_ops
.
slogdet
(
x
)
else
:
elif
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
slogdeterminant
(
x
)
check_dtype
(
x
.
dtype
,
'Input'
,
[
'float32'
,
'float64'
],
'slogdet'
)
check_dtype
(
x
.
dtype
,
'Input'
,
[
'float32'
,
'float64'
],
'slogdet'
)
input_shape
=
list
(
x
.
shape
)
input_shape
=
list
(
x
.
shape
)
...
@@ -2011,7 +1860,9 @@ def slogdet(x, name=None):
...
@@ -2011,7 +1860,9 @@ def slogdet(x, name=None):
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'slogdeterminant'
,
inputs
=
{
'Input'
:
[
x
]},
outputs
=
{
'Out'
:
[
out
]}
type
=
'slogdeterminant'
,
inputs
=
{
'Input'
:
[
x
]},
outputs
=
{
'Out'
:
[
out
]},
)
)
return
out
return
out
...
@@ -2071,8 +1922,7 @@ def svd(x, full_matrices=False, name=None):
...
@@ -2071,8 +1922,7 @@ def svd(x, full_matrices=False, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
svd
(
x
,
full_matrices
)
return
_C_ops
.
svd
(
x
,
full_matrices
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
svd
(
x
,
'full_matrices'
,
full_matrices
)
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'svd'
)
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'svd'
)
check_type
(
full_matrices
,
'full_matrices'
,
bool
,
'svd'
)
check_type
(
full_matrices
,
'full_matrices'
,
bool
,
'svd'
)
helper
=
LayerHelper
(
'svd'
,
**
locals
())
helper
=
LayerHelper
(
'svd'
,
**
locals
())
...
@@ -2146,11 +1996,10 @@ def matrix_power(x, n, name=None):
...
@@ -2146,11 +1996,10 @@ def matrix_power(x, n, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
matrix_power
(
x
,
n
)
return
_C_ops
.
matrix_power
(
x
,
n
)
else
:
if
_in_legacy_dygraph
():
check_variable_and_dtype
(
return
_legacy_C_ops
.
matrix_power
(
x
,
"n"
,
n
)
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'matrix_power'
)
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'matrix_power'
)
check_type
(
n
,
'n'
,
int
,
'matrix_power'
)
check_type
(
n
,
'n'
,
int
,
'matrix_power'
)
helper
=
LayerHelper
(
'matrix_power'
,
**
locals
())
helper
=
LayerHelper
(
'matrix_power'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
...
@@ -2211,12 +2060,7 @@ def qr(x, mode="reduced", name=None):
...
@@ -2211,12 +2060,7 @@ def qr(x, mode="reduced", name=None):
return
r
return
r
else
:
else
:
return
q
,
r
return
q
,
r
if
_in_legacy_dygraph
():
q
,
r
=
_legacy_C_ops
.
qr
(
x
,
'mode'
,
mode
)
if
mode
==
"r"
:
return
r
else
:
else
:
return
q
,
r
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'qr'
)
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'qr'
)
check_type
(
mode
,
'mode'
,
str
,
'qr'
)
check_type
(
mode
,
'mode'
,
str
,
'qr'
)
helper
=
LayerHelper
(
'qr'
,
**
locals
())
helper
=
LayerHelper
(
'qr'
,
**
locals
())
...
@@ -2315,8 +2159,6 @@ def lu(x, pivot=True, get_infos=False, name=None):
...
@@ -2315,8 +2159,6 @@ def lu(x, pivot=True, get_infos=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
lu
,
p
,
info
=
_C_ops
.
lu
(
x
,
pivot
)
lu
,
p
,
info
=
_C_ops
.
lu
(
x
,
pivot
)
elif
paddle
.
in_dynamic_mode
():
lu
,
p
,
info
=
_legacy_C_ops
.
lu
(
x
,
'pivot'
,
pivot
)
else
:
else
:
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'lu'
)
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'lu'
)
helper
=
LayerHelper
(
'lu'
,
**
locals
())
helper
=
LayerHelper
(
'lu'
,
**
locals
())
...
@@ -2413,14 +2255,10 @@ def lu_unpack(x, y, unpack_ludata=True, unpack_pivots=True, name=None):
...
@@ -2413,14 +2255,10 @@ def lu_unpack(x, y, unpack_ludata=True, unpack_pivots=True, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
P
,
L
,
U
=
_C_ops
.
lu_unpack
(
x
,
y
,
unpack_ludata
,
unpack_pivots
)
P
,
L
,
U
=
_C_ops
.
lu_unpack
(
x
,
y
,
unpack_ludata
,
unpack_pivots
)
return
P
,
L
,
U
return
P
,
L
,
U
else
:
if
paddle
.
in_dynamic_mode
():
check_variable_and_dtype
(
P
,
L
,
U
=
_legacy_C_ops
.
lu_unpack
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'lu_unpack'
x
,
y
,
'unpack_ludata'
,
unpack_ludata
,
'unpack_pivots'
,
unpack_pivots
)
)
return
P
,
L
,
U
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
],
'lu_unpack'
)
helper
=
LayerHelper
(
'lu_unpack'
,
**
locals
())
helper
=
LayerHelper
(
'lu_unpack'
,
**
locals
())
p
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
p
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
l
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
l
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
...
@@ -2486,10 +2324,7 @@ def eig(x, name=None):
...
@@ -2486,10 +2324,7 @@ def eig(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
eig
(
x
)
return
_C_ops
.
eig
(
x
)
elif
paddle
.
in_dynamic_mode
():
else
:
w
,
v
=
_legacy_C_ops
.
eig
(
x
)
return
w
,
v
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'X'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'eig'
x
,
'X'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'eig'
)
)
...
@@ -2562,9 +2397,7 @@ def eigvals(x, name=None):
...
@@ -2562,9 +2397,7 @@ def eigvals(x, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
eigvals
(
x
)
return
_C_ops
.
eigvals
(
x
)
elif
paddle
.
in_dynamic_mode
():
else
:
return
_legacy_C_ops
.
eigvals
(
x
)
helper
=
LayerHelper
(
'eigvals'
,
**
locals
())
helper
=
LayerHelper
(
'eigvals'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'eigvals'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
})
helper
.
append_op
(
type
=
'eigvals'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
})
...
@@ -2627,11 +2460,9 @@ def multi_dot(x, name=None):
...
@@ -2627,11 +2460,9 @@ def multi_dot(x, name=None):
# [10, 7]
# [10, 7]
"""
"""
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
multi_dot
(
x
)
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
multi_dot
(
x
)
return
_C_ops
.
multi_dot
(
x
)
else
:
check_type
(
x
,
'x'
,
(
list
,
tuple
),
'multi_dot'
)
check_type
(
x
,
'x'
,
(
list
,
tuple
),
'multi_dot'
)
for
id
,
item
in
enumerate
(
x
):
for
id
,
item
in
enumerate
(
x
):
check_variable_and_dtype
(
check_variable_and_dtype
(
...
@@ -2648,7 +2479,9 @@ def multi_dot(x, name=None):
...
@@ -2648,7 +2479,9 @@ def multi_dot(x, name=None):
helper
=
LayerHelper
(
'multi_dot'
,
**
locals
())
helper
=
LayerHelper
(
'multi_dot'
,
**
locals
())
dtype
=
helper
.
input_dtype
(
input_param_name
=
'x'
)
dtype
=
helper
.
input_dtype
(
input_param_name
=
'x'
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
)
helper
.
append_op
(
type
=
'multi_dot'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'multi_dot'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
}
)
return
out
return
out
...
@@ -2687,9 +2520,7 @@ def eigh(x, UPLO='L', name=None):
...
@@ -2687,9 +2520,7 @@ def eigh(x, UPLO='L', name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
eigh
(
x
,
UPLO
)
return
_C_ops
.
eigh
(
x
,
UPLO
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
eigh
(
x
,
'UPLO'
,
UPLO
)
def
__check_input
(
x
,
UPLO
):
def
__check_input
(
x
,
UPLO
):
x_shape
=
list
(
x
.
shape
)
x_shape
=
list
(
x
.
shape
)
...
@@ -2713,7 +2544,10 @@ def eigh(x, UPLO='L', name=None):
...
@@ -2713,7 +2544,10 @@ def eigh(x, UPLO='L', name=None):
helper
=
LayerHelper
(
'eigh'
,
**
locals
())
helper
=
LayerHelper
(
'eigh'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'eigh'
x
,
'dtype'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'eigh'
,
)
)
out_value
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out_value
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
...
@@ -2838,68 +2672,6 @@ def pinv(x, rcond=1e-15, hermitian=False, name=None):
...
@@ -2838,68 +2672,6 @@ def pinv(x, rcond=1e-15, hermitian=False, name=None):
u_conj
=
_C_ops
.
conj
(
u
)
u_conj
=
_C_ops
.
conj
(
u
)
out_2
=
_C_ops
.
matmul
(
out_1
,
u_conj
,
False
,
True
)
out_2
=
_C_ops
.
matmul
(
out_1
,
u_conj
,
False
,
True
)
return
out_2
return
out_2
if
_in_legacy_dygraph
():
if
not
hermitian
:
# combine svd and matmul op
u
,
s
,
vt
=
_legacy_C_ops
.
svd
(
x
,
'full_matrices'
,
False
)
max_singular_val
=
_legacy_C_ops
.
reduce_max
(
s
,
'dim'
,
[
-
1
],
'keep_dim'
,
True
,
'reduce_all'
,
False
)
rcond
=
paddle
.
to_tensor
(
rcond
,
dtype
=
x
.
dtype
)
cutoff
=
rcond
*
max_singular_val
y
=
float
(
'inf'
)
y
=
paddle
.
to_tensor
(
y
,
dtype
=
x
.
dtype
)
condition
=
s
>
cutoff
cond_int
=
cast
(
condition
,
s
.
dtype
)
cond_not_int
=
cast
(
logical_not
(
condition
),
s
.
dtype
)
out1
=
multiply
(
1
/
s
,
cond_int
)
out2
=
multiply
(
1
/
y
,
cond_not_int
)
singular
=
add
(
out1
,
out2
)
st
,
_
=
_legacy_C_ops
.
unsqueeze2
(
singular
,
'axes'
,
[
-
2
])
dims
=
list
(
range
(
len
(
vt
.
shape
)))
perm
=
dims
[:
-
2
]
+
[
dims
[
-
1
]]
+
[
dims
[
-
2
]]
v
,
_
=
_legacy_C_ops
.
transpose2
(
vt
,
'axis'
,
perm
)
out_1
=
v
*
st
if
in_dygraph_mode
():
out_2
=
_C_ops
.
matmul
(
out_1
,
u
,
False
,
True
)
else
:
out_2
=
_legacy_C_ops
.
matmul_v2
(
out_1
,
u
,
'trans_x'
,
False
,
'trans_y'
,
True
)
return
out_2
else
:
# combine eigh and matmul op
s
,
u
=
_legacy_C_ops
.
eigh
(
x
,
'UPLO'
,
'L'
)
s_abs
=
paddle
.
abs
(
s
)
max_singular_val
=
_legacy_C_ops
.
reduce_max
(
s_abs
,
'dim'
,
[
-
1
],
'keep_dim'
,
True
,
'reduce_all'
,
False
)
rcond
=
paddle
.
to_tensor
(
rcond
,
dtype
=
s
.
dtype
)
cutoff
=
rcond
*
max_singular_val
y
=
float
(
'inf'
)
y
=
paddle
.
to_tensor
(
y
,
dtype
=
s
.
dtype
)
condition
=
s_abs
>
cutoff
cond_int
=
cast
(
condition
,
s
.
dtype
)
cond_not_int
=
cast
(
logical_not
(
condition
),
s
.
dtype
)
out1
=
multiply
(
1
/
s
,
cond_int
)
out2
=
multiply
(
1
/
y
,
cond_not_int
)
singular
=
add
(
out1
,
out2
)
st
,
_
=
_legacy_C_ops
.
unsqueeze2
(
singular
,
'axes'
,
[
-
2
])
out_1
=
u
*
st
u_conj
=
_legacy_C_ops
.
conj
(
u
)
if
in_dygraph_mode
():
out_2
=
_C_ops
.
matmul
(
out_1
,
u_conj
,
False
,
True
)
else
:
out_2
=
_legacy_C_ops
.
matmul_v2
(
out_1
,
u_conj
,
'trans_x'
,
False
,
'trans_y'
,
True
)
return
out_2
else
:
else
:
if
not
hermitian
:
if
not
hermitian
:
helper
=
LayerHelper
(
'pinv'
,
**
locals
())
helper
=
LayerHelper
(
'pinv'
,
**
locals
())
...
@@ -3098,10 +2870,7 @@ def solve(x, y, name=None):
...
@@ -3098,10 +2870,7 @@ def solve(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
solve
(
x
,
y
)
return
_C_ops
.
solve
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
solve
(
x
,
y
)
inputs
=
{
"X"
:
[
x
],
"Y"
:
[
y
]}
inputs
=
{
"X"
:
[
x
],
"Y"
:
[
y
]}
helper
=
LayerHelper
(
"solve"
,
**
locals
())
helper
=
LayerHelper
(
"solve"
,
**
locals
())
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'solve'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'solve'
)
...
@@ -3170,23 +2939,15 @@ def triangular_solve(
...
@@ -3170,23 +2939,15 @@ def triangular_solve(
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
triangular_solve
(
x
,
y
,
upper
,
transpose
,
unitriangular
)
return
_C_ops
.
triangular_solve
(
x
,
y
,
upper
,
transpose
,
unitriangular
)
else
:
if
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
triangular_solve
(
x
,
y
,
'upper'
,
upper
,
'transpose'
,
transpose
,
'unitriangular'
,
unitriangular
,
)
inputs
=
{
"X"
:
[
x
],
"Y"
:
[
y
]}
inputs
=
{
"X"
:
[
x
],
"Y"
:
[
y
]}
helper
=
LayerHelper
(
"triangular_solve"
,
**
locals
())
helper
=
LayerHelper
(
"triangular_solve"
,
**
locals
())
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'triangular_solve'
)
check_variable_and_dtype
(
check_variable_and_dtype
(
y
,
'y'
,
[
'float32'
,
'float64'
],
'triangular_solve'
)
x
,
'x'
,
[
'float32'
,
'float64'
],
'triangular_solve'
)
check_variable_and_dtype
(
y
,
'y'
,
[
'float32'
,
'float64'
],
'triangular_solve'
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
...
@@ -3237,13 +2998,14 @@ def cholesky_solve(x, y, upper=False, name=None):
...
@@ -3237,13 +2998,14 @@ def cholesky_solve(x, y, upper=False, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
cholesky_solve
(
x
,
y
,
upper
)
return
_C_ops
.
cholesky_solve
(
x
,
y
,
upper
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
cholesky_solve
(
x
,
y
,
'upper'
,
upper
)
helper
=
LayerHelper
(
"cholesky_solve"
,
**
locals
())
helper
=
LayerHelper
(
"cholesky_solve"
,
**
locals
())
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'cholesky_solve'
)
check_variable_and_dtype
(
check_variable_and_dtype
(
y
,
'y'
,
[
'float32'
,
'float64'
],
'cholesky_solve'
)
x
,
'x'
,
[
'float32'
,
'float64'
],
'cholesky_solve'
)
check_variable_and_dtype
(
y
,
'y'
,
[
'float32'
,
'float64'
],
'cholesky_solve'
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
...
@@ -3284,11 +3046,7 @@ def eigvalsh(x, UPLO='L', name=None):
...
@@ -3284,11 +3046,7 @@ def eigvalsh(x, UPLO='L', name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
values
,
_
=
_C_ops
.
eigvalsh
(
x
,
UPLO
,
x
.
stop_gradient
)
values
,
_
=
_C_ops
.
eigvalsh
(
x
,
UPLO
,
x
.
stop_gradient
)
return
values
return
values
else
:
elif
paddle
.
in_dynamic_mode
():
is_test
=
x
.
stop_gradient
values
,
_
=
_legacy_C_ops
.
eigvalsh
(
x
,
'UPLO'
,
UPLO
,
'is_test'
,
is_test
)
return
values
def
__check_input
(
x
,
UPLO
):
def
__check_input
(
x
,
UPLO
):
x_shape
=
list
(
x
.
shape
)
x_shape
=
list
(
x
.
shape
)
...
@@ -3423,16 +3181,10 @@ def lstsq(x, y, rcond=None, driver=None, name=None):
...
@@ -3423,16 +3181,10 @@ def lstsq(x, y, rcond=None, driver=None, name=None):
elif
x
.
dtype
==
paddle
.
float64
:
elif
x
.
dtype
==
paddle
.
float64
:
rcond
=
1e-15
*
max
(
x
.
shape
[
-
2
],
x
.
shape
[
-
1
])
rcond
=
1e-15
*
max
(
x
.
shape
[
-
2
],
x
.
shape
[
-
1
])
if
_non_static_mode
():
if
in_dygraph_mode
():
if
in_dygraph_mode
():
solution
,
residuals
,
rank
,
singular_values
=
_C_ops
.
lstsq
(
solution
,
residuals
,
rank
,
singular_values
=
_C_ops
.
lstsq
(
x
,
y
,
rcond
,
driver
x
,
y
,
rcond
,
driver
)
)
else
:
solution
,
residuals
,
rank
,
singular_values
=
_legacy_C_ops
.
lstsq
(
x
,
y
,
'rcond'
,
rcond
,
'driver'
,
driver
)
if
driver
==
"gels"
:
if
driver
==
"gels"
:
rank
=
paddle
.
empty
(
shape
=
[
0
],
dtype
=
paddle
.
int32
)
rank
=
paddle
.
empty
(
shape
=
[
0
],
dtype
=
paddle
.
int32
)
singular_values
=
paddle
.
empty
(
shape
=
[
0
],
dtype
=
x
.
dtype
)
singular_values
=
paddle
.
empty
(
shape
=
[
0
],
dtype
=
x
.
dtype
)
...
@@ -3440,19 +3192,27 @@ def lstsq(x, y, rcond=None, driver=None, name=None):
...
@@ -3440,19 +3192,27 @@ def lstsq(x, y, rcond=None, driver=None, name=None):
singular_values
=
paddle
.
empty
(
shape
=
[
0
],
dtype
=
x
.
dtype
)
singular_values
=
paddle
.
empty
(
shape
=
[
0
],
dtype
=
x
.
dtype
)
return
solution
,
residuals
,
rank
,
singular_values
return
solution
,
residuals
,
rank
,
singular_values
else
:
helper
=
LayerHelper
(
'lstsq'
,
**
locals
())
helper
=
LayerHelper
(
'lstsq'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'dtype'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'lstsq'
x
,
'dtype'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'lstsq'
,
)
)
check_variable_and_dtype
(
check_variable_and_dtype
(
y
,
'dtype'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'lstsq'
y
,
'dtype'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'lstsq'
,
)
)
solution
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
solution
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
residuals
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
residuals
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
rank
=
helper
.
create_variable_for_type_inference
(
dtype
=
paddle
.
int32
)
rank
=
helper
.
create_variable_for_type_inference
(
dtype
=
paddle
.
int32
)
singular_values
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
singular_values
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'lstsq'
,
type
=
'lstsq'
,
...
@@ -3468,9 +3228,13 @@ def lstsq(x, y, rcond=None, driver=None, name=None):
...
@@ -3468,9 +3228,13 @@ def lstsq(x, y, rcond=None, driver=None, name=None):
if
driver
==
"gels"
:
if
driver
==
"gels"
:
rank
=
paddle
.
static
.
data
(
name
=
'rank'
,
shape
=
[
0
])
rank
=
paddle
.
static
.
data
(
name
=
'rank'
,
shape
=
[
0
])
singular_values
=
paddle
.
static
.
data
(
name
=
'singular_values'
,
shape
=
[
0
])
singular_values
=
paddle
.
static
.
data
(
name
=
'singular_values'
,
shape
=
[
0
]
)
elif
driver
==
"gelsy"
:
elif
driver
==
"gelsy"
:
singular_values
=
paddle
.
static
.
data
(
name
=
'singular_values'
,
shape
=
[
0
])
singular_values
=
paddle
.
static
.
data
(
name
=
'singular_values'
,
shape
=
[
0
]
)
return
solution
,
residuals
,
rank
,
singular_values
return
solution
,
residuals
,
rank
,
singular_values
...
...
python/paddle/tensor/logic.py
浏览文件 @
861fef52
...
@@ -26,10 +26,9 @@ if _in_eager_mode_:
...
@@ -26,10 +26,9 @@ if _in_eager_mode_:
else
:
else
:
from
..framework
import
VarBase
as
Tensor
from
..framework
import
VarBase
as
Tensor
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle
import
_C_ops
from
paddle.tensor.creation
import
full
from
paddle.tensor.creation
import
full
from
..fluid.framework
import
_in_legacy_dygraph
from
..framework
import
LayerHelper
,
in_dygraph_mode
from
..framework
import
LayerHelper
,
in_dygraph_mode
__all__
=
[]
__all__
=
[]
...
@@ -42,12 +41,7 @@ def _logical_op(op_name, x, y, out=None, name=None, binary_op=True):
...
@@ -42,12 +41,7 @@ def _logical_op(op_name, x, y, out=None, name=None, binary_op=True):
return
op
(
x
,
y
)
return
op
(
x
,
y
)
else
:
else
:
return
op
(
x
)
return
op
(
x
)
elif
_in_legacy_dygraph
():
op
=
getattr
(
_legacy_C_ops
,
op_name
)
if
binary_op
:
return
op
(
x
,
y
)
else
:
else
:
return
op
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
"x"
,
"x"
,
...
@@ -58,7 +52,15 @@ def _logical_op(op_name, x, y, out=None, name=None, binary_op=True):
...
@@ -58,7 +52,15 @@ def _logical_op(op_name, x, y, out=None, name=None, binary_op=True):
check_variable_and_dtype
(
check_variable_and_dtype
(
y
,
y
,
"y"
,
"y"
,
[
"bool"
,
"int8"
,
"int16"
,
"int32"
,
"int64"
,
"float32"
,
"float64"
],
[
"bool"
,
"int8"
,
"int16"
,
"int32"
,
"int64"
,
"float32"
,
"float64"
,
],
op_name
,
op_name
,
)
)
if
out
is
not
None
:
if
out
is
not
None
:
...
@@ -80,7 +82,9 @@ def _logical_op(op_name, x, y, out=None, name=None, binary_op=True):
...
@@ -80,7 +82,9 @@ def _logical_op(op_name, x, y, out=None, name=None, binary_op=True):
type
=
op_name
,
inputs
=
{
"X"
:
x
,
"Y"
:
y
},
outputs
=
{
"Out"
:
out
}
type
=
op_name
,
inputs
=
{
"X"
:
x
,
"Y"
:
y
},
outputs
=
{
"Out"
:
out
}
)
)
else
:
else
:
helper
.
append_op
(
type
=
op_name
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
op_name
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
}
)
return
out
return
out
...
@@ -288,9 +292,7 @@ def is_empty(x, name=None):
...
@@ -288,9 +292,7 @@ def is_empty(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
is_empty
(
x
)
return
_C_ops
.
is_empty
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
is_empty
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'is_empty'
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'is_empty'
)
)
...
@@ -336,14 +338,13 @@ def equal_all(x, y, name=None):
...
@@ -336,14 +338,13 @@ def equal_all(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
equal_all
(
x
,
y
)
return
_C_ops
.
equal_all
(
x
,
y
)
else
:
if
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
equal_all
(
x
,
y
)
helper
=
LayerHelper
(
"equal_all"
,
**
locals
())
helper
=
LayerHelper
(
"equal_all"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
'bool'
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
'bool'
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'equal_all'
,
inputs
=
{
'X'
:
[
x
],
'Y'
:
[
y
]},
outputs
=
{
'Out'
:
[
out
]}
type
=
'equal_all'
,
inputs
=
{
'X'
:
[
x
],
'Y'
:
[
y
]},
outputs
=
{
'Out'
:
[
out
]},
)
)
return
out
return
out
...
@@ -393,10 +394,7 @@ def allclose(x, y, rtol=1e-05, atol=1e-08, equal_nan=False, name=None):
...
@@ -393,10 +394,7 @@ def allclose(x, y, rtol=1e-05, atol=1e-08, equal_nan=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
allclose
(
x
,
y
,
rtol
,
atol
,
equal_nan
)
return
_C_ops
.
allclose
(
x
,
y
,
rtol
,
atol
,
equal_nan
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
allclose
(
x
,
y
,
'rtol'
,
str
(
rtol
),
'atol'
,
str
(
atol
),
'equal_nan'
,
equal_nan
)
check_variable_and_dtype
(
x
,
"input"
,
[
'float32'
,
'float64'
],
'allclose'
)
check_variable_and_dtype
(
x
,
"input"
,
[
'float32'
,
'float64'
],
'allclose'
)
check_variable_and_dtype
(
y
,
"input"
,
[
'float32'
,
'float64'
],
'allclose'
)
check_variable_and_dtype
(
y
,
"input"
,
[
'float32'
,
'float64'
],
'allclose'
)
check_type
(
rtol
,
'rtol'
,
float
,
'allclose'
)
check_type
(
rtol
,
'rtol'
,
float
,
'allclose'
)
...
@@ -456,9 +454,6 @@ def equal(x, y, name=None):
...
@@ -456,9 +454,6 @@ def equal(x, y, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
equal
(
x
,
y
)
return
_C_ops
.
equal
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
equal
(
x
,
y
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -512,9 +507,6 @@ def greater_equal(x, y, name=None):
...
@@ -512,9 +507,6 @@ def greater_equal(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
greater_equal
(
x
,
y
)
return
_C_ops
.
greater_equal
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
greater_equal
(
x
,
y
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -568,9 +560,6 @@ def greater_than(x, y, name=None):
...
@@ -568,9 +560,6 @@ def greater_than(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
greater_than
(
x
,
y
)
return
_C_ops
.
greater_than
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
greater_than
(
x
,
y
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -625,9 +614,6 @@ def less_equal(x, y, name=None):
...
@@ -625,9 +614,6 @@ def less_equal(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
less_equal
(
x
,
y
)
return
_C_ops
.
less_equal
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
less_equal
(
x
,
y
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -682,9 +668,6 @@ def less_than(x, y, name=None):
...
@@ -682,9 +668,6 @@ def less_than(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
less_than
(
x
,
y
)
return
_C_ops
.
less_than
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
less_than
(
x
,
y
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -739,9 +722,6 @@ def not_equal(x, y, name=None):
...
@@ -739,9 +722,6 @@ def not_equal(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
not_equal
(
x
,
y
)
return
_C_ops
.
not_equal
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
not_equal
(
x
,
y
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -802,15 +782,12 @@ def _bitwise_op(op_name, x, y, out=None, name=None, binary_op=True):
...
@@ -802,15 +782,12 @@ def _bitwise_op(op_name, x, y, out=None, name=None, binary_op=True):
return
op
(
x
,
y
)
return
op
(
x
,
y
)
else
:
else
:
return
op
(
x
)
return
op
(
x
)
elif
_in_legacy_dygraph
():
op
=
getattr
(
_legacy_C_ops
,
op_name
)
if
binary_op
:
return
op
(
x
,
y
)
else
:
else
:
return
op
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
"x"
,
[
"bool"
,
"uint8"
,
"int8"
,
"int16"
,
"int32"
,
"int64"
],
op_name
x
,
"x"
,
[
"bool"
,
"uint8"
,
"int8"
,
"int16"
,
"int32"
,
"int64"
],
op_name
,
)
)
if
y
is
not
None
:
if
y
is
not
None
:
check_variable_and_dtype
(
check_variable_and_dtype
(
...
@@ -834,7 +811,9 @@ def _bitwise_op(op_name, x, y, out=None, name=None, binary_op=True):
...
@@ -834,7 +811,9 @@ def _bitwise_op(op_name, x, y, out=None, name=None, binary_op=True):
type
=
op_name
,
inputs
=
{
"X"
:
x
,
"Y"
:
y
},
outputs
=
{
"Out"
:
out
}
type
=
op_name
,
inputs
=
{
"X"
:
x
,
"Y"
:
y
},
outputs
=
{
"Out"
:
out
}
)
)
else
:
else
:
helper
.
append_op
(
type
=
op_name
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
op_name
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
}
)
return
out
return
out
...
@@ -998,11 +977,7 @@ def isclose(x, y, rtol=1e-05, atol=1e-08, equal_nan=False, name=None):
...
@@ -998,11 +977,7 @@ def isclose(x, y, rtol=1e-05, atol=1e-08, equal_nan=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
isclose
(
x
,
y
,
rtol
,
atol
,
equal_nan
)
return
_C_ops
.
isclose
(
x
,
y
,
rtol
,
atol
,
equal_nan
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
isclose
(
x
,
y
,
'rtol'
,
str
(
rtol
),
'atol'
,
str
(
atol
),
'equal_nan'
,
equal_nan
)
check_variable_and_dtype
(
x
,
"input"
,
[
'float32'
,
'float64'
],
'isclose'
)
check_variable_and_dtype
(
x
,
"input"
,
[
'float32'
,
'float64'
],
'isclose'
)
check_variable_and_dtype
(
y
,
"input"
,
[
'float32'
,
'float64'
],
'isclose'
)
check_variable_and_dtype
(
y
,
"input"
,
[
'float32'
,
'float64'
],
'isclose'
)
check_type
(
rtol
,
'rtol'
,
float
,
'isclose'
)
check_type
(
rtol
,
'rtol'
,
float
,
'isclose'
)
...
...
python/paddle/tensor/manipulation.py
浏览文件 @
861fef52
...
@@ -19,17 +19,16 @@ from collections import Counter
...
@@ -19,17 +19,16 @@ from collections import Counter
import
numpy
as
np
import
numpy
as
np
import
paddle
import
paddle
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle
import
_C_ops
from
paddle.utils.inplace_utils
import
inplace_apis_in_dygraph_only
from
paddle.utils.inplace_utils
import
inplace_apis_in_dygraph_only
from
..common_ops_import
import
_varbase_creator
,
fill_constant
from
..common_ops_import
import
fill_constant
from
..fluid.data_feeder
import
(
from
..fluid.data_feeder
import
(
check_dtype
,
check_dtype
,
check_type
,
check_type
,
check_variable_and_dtype
,
check_variable_and_dtype
,
convert_dtype
,
convert_dtype
,
)
)
from
..fluid.framework
import
_in_legacy_dygraph
,
_non_static_mode
from
..fluid.layers
import
utils
from
..fluid.layers
import
utils
from
..framework
import
(
from
..framework
import
(
LayerHelper
,
LayerHelper
,
...
@@ -124,7 +123,7 @@ def tensor_array_to_tensor(input, axis=1, use_stack=False, name=None):
...
@@ -124,7 +123,7 @@ def tensor_array_to_tensor(input, axis=1, use_stack=False, name=None):
paddle.tensor.array.array_write(x1, i + 1, array)
paddle.tensor.array.array_write(x1, i + 1, array)
output, output_index = paddle.tensor.manipulation.tensor_array_to_tensor(input=array)
output, output_index = paddle.tensor.manipulation.tensor_array_to_tensor(input=array)
"""
"""
if
_non_static
_mode
():
if
in_dygraph
_mode
():
assert
isinstance
(
assert
isinstance
(
input
,
list
input
,
list
),
"The 'input' in tensor_array_to_tensor must be list"
),
"The 'input' in tensor_array_to_tensor must be list"
...
@@ -136,7 +135,7 @@ def tensor_array_to_tensor(input, axis=1, use_stack=False, name=None):
...
@@ -136,7 +135,7 @@ def tensor_array_to_tensor(input, axis=1, use_stack=False, name=None):
np
.
array
(
list
(
map
(
lambda
x
:
int
(
x
.
shape
[
axis
]),
input
)))
np
.
array
(
list
(
map
(
lambda
x
:
int
(
x
.
shape
[
axis
]),
input
)))
)
)
return
res
,
sizes
return
res
,
sizes
else
:
check_type
(
input
,
'input'
,
(
list
,
Variable
),
'tensor_array_to_tensor'
)
check_type
(
input
,
'input'
,
(
list
,
Variable
),
'tensor_array_to_tensor'
)
if
isinstance
(
input
,
list
):
if
isinstance
(
input
,
list
):
for
i
,
input_x
in
enumerate
(
input
):
for
i
,
input_x
in
enumerate
(
input
):
...
@@ -147,7 +146,9 @@ def tensor_array_to_tensor(input, axis=1, use_stack=False, name=None):
...
@@ -147,7 +146,9 @@ def tensor_array_to_tensor(input, axis=1, use_stack=False, name=None):
'tensor_array_to_tensor'
,
'tensor_array_to_tensor'
,
)
)
helper
=
LayerHelper
(
'tensor_array_to_tensor'
,
**
locals
())
helper
=
LayerHelper
(
'tensor_array_to_tensor'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
()
)
out_index
=
helper
.
create_variable_for_type_inference
(
dtype
=
"int32"
)
out_index
=
helper
.
create_variable_for_type_inference
(
dtype
=
"int32"
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'tensor_array_to_tensor'
,
type
=
'tensor_array_to_tensor'
,
...
@@ -186,13 +187,7 @@ def cast(x, dtype):
...
@@ -186,13 +187,7 @@ def cast(x, dtype):
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
return
_C_ops
.
cast
(
x
,
dtype
)
return
_C_ops
.
cast
(
x
,
dtype
)
else
:
if
_non_static_mode
():
if
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
out
=
_legacy_C_ops
.
cast
(
x
,
'in_dtype'
,
x
.
dtype
,
'out_dtype'
,
dtype
)
return
out
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
...
@@ -362,73 +357,6 @@ def slice(input, axes, starts, ends):
...
@@ -362,73 +357,6 @@ def slice(input, axes, starts, ends):
return
_C_ops
.
slice
(
input
,
axes
,
starts
,
ends
,
infer_flags
,
[])
return
_C_ops
.
slice
(
input
,
axes
,
starts
,
ends
,
infer_flags
,
[])
else
:
else
:
if
_in_legacy_dygraph
():
attrs
=
()
starts_tensor
=
None
ends_tensor
=
None
if
isinstance
(
axes
,
(
list
,
tuple
)):
axes
=
list
(
axes
)
if
len
(
axes
)
==
0
:
raise
ValueError
(
"Input axes should not be an empty list/tuple."
)
for
i
in
range
(
len
(
axes
)):
if
axes
[
i
]
<
0
:
axes
[
i
]
=
max
(
0
,
axes
[
i
]
+
len
(
input
.
shape
))
else
:
axes
[
i
]
=
min
(
len
(
input
.
shape
)
-
1
,
axes
[
i
])
else
:
raise
ValueError
(
"Input axes must be a python list or tuple, but reveived {}"
.
format
(
type
(
axes
)
)
)
infer_flags
=
list
(
1
for
i
in
range
(
len
(
axes
)))
tmp_tensor_type
=
Variable
if
isinstance
(
starts
,
(
list
,
tuple
)):
starts
=
[
item
.
numpy
().
item
(
0
)
if
isinstance
(
item
,
tmp_tensor_type
)
else
item
for
item
in
starts
]
attrs
+=
(
'starts'
,
starts
)
elif
isinstance
(
starts
,
tmp_tensor_type
):
starts_tensor
=
starts
starts
.
stop_gradient
=
True
infer_flags
=
list
(
-
1
for
i
in
range
(
len
(
axes
)))
if
isinstance
(
ends
,
(
list
,
tuple
)):
ends
=
[
item
.
numpy
().
item
(
0
)
if
isinstance
(
item
,
tmp_tensor_type
)
else
item
for
item
in
ends
]
attrs
+=
(
'ends'
,
ends
)
elif
isinstance
(
ends
,
tmp_tensor_type
):
ends_tensor
=
ends
ends_tensor
.
stop_gradient
=
True
infer_flags
=
list
(
-
1
for
i
in
range
(
len
(
axes
)))
return
_legacy_C_ops
.
slice
(
input
,
starts_tensor
,
ends_tensor
,
None
,
None
,
'axes'
,
axes
,
'infer_flags'
,
infer_flags
,
*
attrs
,
)
if
not
isinstance
(
starts
,
(
list
,
tuple
,
Variable
)):
if
not
isinstance
(
starts
,
(
list
,
tuple
,
Variable
)):
raise
ValueError
(
raise
ValueError
(
"Input starts must be an Variable, python list or tuple."
"Input starts must be an Variable, python list or tuple."
...
@@ -452,7 +380,9 @@ def slice(input, axes, starts, ends):
...
@@ -452,7 +380,9 @@ def slice(input, axes, starts, ends):
elif
isinstance
(
starts
,
(
list
,
tuple
)):
elif
isinstance
(
starts
,
(
list
,
tuple
)):
attrs
[
'starts'
]
=
[]
attrs
[
'starts'
]
=
[]
if
utils
.
_contain_var
(
starts
):
if
utils
.
_contain_var
(
starts
):
inputs
[
'StartsTensorList'
]
=
utils
.
_convert_to_tensor_list
(
starts
)
inputs
[
'StartsTensorList'
]
=
utils
.
_convert_to_tensor_list
(
starts
)
for
i
,
dim
in
enumerate
(
starts
):
for
i
,
dim
in
enumerate
(
starts
):
if
isinstance
(
dim
,
Variable
):
if
isinstance
(
dim
,
Variable
):
attrs
[
'starts'
].
append
(
-
1
)
attrs
[
'starts'
].
append
(
-
1
)
...
@@ -545,10 +475,6 @@ def transpose(x, perm, name=None):
...
@@ -545,10 +475,6 @@ def transpose(x, perm, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
transpose
(
x
,
perm
)
return
_C_ops
.
transpose
(
x
,
perm
)
else
:
else
:
if
_in_legacy_dygraph
():
out
,
_
=
_legacy_C_ops
.
transpose2
(
x
,
'axis'
,
perm
)
return
out
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
...
@@ -625,14 +551,7 @@ def unstack(x, axis=0, num=None):
...
@@ -625,14 +551,7 @@ def unstack(x, axis=0, num=None):
if
num
==
0
:
if
num
==
0
:
return
[]
return
[]
return
_C_ops
.
unstack
(
x
,
axis
,
num
)
return
_C_ops
.
unstack
(
x
,
axis
,
num
)
else
:
if
_non_static_mode
():
if
num
is
None
:
num
=
x
.
shape
[
axis
]
if
num
==
0
:
return
[]
return
_legacy_C_ops
.
unstack
(
x
,
num
,
'axis'
,
int
(
axis
),
'num'
,
num
)
helper
=
LayerHelper
(
'unstack'
,
**
locals
())
helper
=
LayerHelper
(
'unstack'
,
**
locals
())
if
num
is
None
:
if
num
is
None
:
if
axis
is
None
or
x
.
shape
[
axis
]
<=
0
:
if
axis
is
None
or
x
.
shape
[
axis
]
<=
0
:
...
@@ -959,12 +878,7 @@ def fill_(x, value):
...
@@ -959,12 +878,7 @@ def fill_(x, value):
"The type of 'value' must be int or float, but received %s."
"The type of 'value' must be int or float, but received %s."
%
(
type
(
value
))
%
(
type
(
value
))
)
)
if
in_dygraph_mode
():
return
_C_ops
.
fill_
(
x
,
value
)
return
_C_ops
.
fill_
(
x
,
value
)
else
:
return
_legacy_C_ops
.
fill_any_
(
x
,
"value_float"
,
float
(
value
),
"value_int"
,
int
(
value
)
)
@
dygraph_only
@
dygraph_only
...
@@ -992,12 +906,7 @@ def zero_(x):
...
@@ -992,12 +906,7 @@ def zero_(x):
print(tensor.tolist()) #[0, 0, 0, 0, 0]
print(tensor.tolist()) #[0, 0, 0, 0, 0]
"""
"""
if
in_dygraph_mode
():
return
_C_ops
.
fill_
(
x
,
0.0
)
return
_C_ops
.
fill_
(
x
,
0.0
)
else
:
return
_legacy_C_ops
.
fill_any_
(
x
,
"value_float"
,
0.0
,
"value_int"
,
int
(
0
)
)
@
dygraph_only
@
dygraph_only
...
@@ -1025,39 +934,11 @@ def fill_diagonal_(x, value, offset=0, wrap=False, name=None):
...
@@ -1025,39 +934,11 @@ def fill_diagonal_(x, value, offset=0, wrap=False, name=None):
x.fill_diagonal_(1.0)
x.fill_diagonal_(1.0)
print(x.tolist()) #[[1.0, 2.0, 2.0], [2.0, 1.0, 2.0], [2.0, 2.0, 1.0], [2.0, 2.0, 2.0]]
print(x.tolist()) #[[1.0, 2.0, 2.0], [2.0, 1.0, 2.0], [2.0, 2.0, 1.0], [2.0, 2.0, 2.0]]
"""
"""
helper
=
LayerHelper
(
"fill_diagonal_"
,
**
locals
())
check_type
(
x
,
'X'
,
(
Variable
),
'fill_diagonal_'
)
dtype
=
helper
.
input_dtype
(
'x'
)
check_dtype
(
dtype
,
'X'
,
[
'bool'
,
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'fill_diagonal_'
,
)
check_type
(
value
,
'value'
,
(
bool
,
int
,
float
),
'fill_diagonal_'
)
check_type
(
wrap
,
'wrap'
,
(
bool
),
'fill_diagonal_'
)
inshape
=
x
.
shape
inshapeset
=
set
(
inshape
)
assert
len
(
inshape
)
>=
2
,
'Tensor dims should >= 2 in fill_diagonal_ API'
if
len
(
inshape
)
>
2
:
assert
(
len
(
inshapeset
)
==
1
),
'Tensor dims should be equal while input dims > 2 in fill_diagonal_ API'
if
in_dygraph_mode
():
if
in_dygraph_mode
():
if
len
(
in
shape
)
==
2
:
if
len
(
x
.
shape
)
==
2
:
return
_C_ops
.
fill_diagonal_
(
x
,
value
,
offset
,
wrap
)
return
_C_ops
.
fill_diagonal_
(
x
,
value
,
offset
,
wrap
)
return
_C_ops
.
fill_diagonal_
(
x
,
value
,
offset
,
True
)
return
_C_ops
.
fill_diagonal_
(
x
,
value
,
offset
,
True
)
if
len
(
inshape
)
==
2
:
return
_legacy_C_ops
.
fill_diagonal_
(
x
,
'value'
,
value
,
'offset'
,
offset
,
'wrap'
,
wrap
)
return
_legacy_C_ops
.
fill_diagonal_
(
x
,
'value'
,
value
,
'offset'
,
offset
,
'wrap'
,
True
)
def
_fill_diagonal_tensor_impl
(
x
,
y
,
offset
=
0
,
dim1
=
0
,
dim2
=
1
,
inplace
=
False
):
def
_fill_diagonal_tensor_impl
(
x
,
y
,
offset
=
0
,
dim1
=
0
,
dim2
=
1
,
inplace
=
False
):
inshape
=
x
.
shape
inshape
=
x
.
shape
...
@@ -1087,18 +968,8 @@ def _fill_diagonal_tensor_impl(x, y, offset=0, dim1=0, dim2=1, inplace=False):
...
@@ -1087,18 +968,8 @@ def _fill_diagonal_tensor_impl(x, y, offset=0, dim1=0, dim2=1, inplace=False):
y
=
y
.
reshape
([
1
,
-
1
])
y
=
y
.
reshape
([
1
,
-
1
])
if
inplace
:
if
inplace
:
if
in_dygraph_mode
():
return
_C_ops
.
fill_diagonal_tensor_
(
x
,
y
,
offset
,
dim1
,
dim2
)
return
_C_ops
.
fill_diagonal_tensor_
(
x
,
y
,
offset
,
dim1
,
dim2
)
else
:
return
_legacy_C_ops
.
fill_diagonal_tensor_
(
x
,
y
,
'offset'
,
offset
,
'dim1'
,
dim1
,
'dim2'
,
dim2
)
if
in_dygraph_mode
():
return
_C_ops
.
fill_diagonal_tensor
(
x
,
y
,
offset
,
dim1
,
dim2
)
return
_C_ops
.
fill_diagonal_tensor
(
x
,
y
,
offset
,
dim1
,
dim2
)
else
:
return
_legacy_C_ops
.
fill_diagonal_tensor
(
x
,
y
,
'offset'
,
offset
,
'dim1'
,
dim1
,
'dim2'
,
dim2
)
def
fill_diagonal_tensor_
(
x
,
y
,
offset
=
0
,
dim1
=
0
,
dim2
=
1
,
name
=
None
):
def
fill_diagonal_tensor_
(
x
,
y
,
offset
=
0
,
dim1
=
0
,
dim2
=
1
,
name
=
None
):
...
@@ -1248,17 +1119,7 @@ def concat(x, axis=0, name=None):
...
@@ -1248,17 +1119,7 @@ def concat(x, axis=0, name=None):
if
not
isinstance
(
input
,
Variable
):
if
not
isinstance
(
input
,
Variable
):
input
=
[
t
for
t
in
input
if
t
.
shape
.
count
(
0
)
==
0
]
input
=
[
t
for
t
in
input
if
t
.
shape
.
count
(
0
)
==
0
]
return
_C_ops
.
concat
(
input
,
axis
)
return
_C_ops
.
concat
(
input
,
axis
)
else
:
if
_in_legacy_dygraph
():
if
isinstance
(
axis
,
Variable
):
axis
=
axis
.
numpy
()
axis
=
axis
.
item
(
0
)
if
not
isinstance
(
input
,
Variable
):
input
=
[
t
for
t
in
input
if
t
.
shape
.
count
(
0
)
==
0
]
out
=
_varbase_creator
()
_legacy_C_ops
.
concat
(
input
,
out
,
'axis'
,
axis
)
return
out
check_type
(
input
,
'input'
,
(
list
,
tuple
,
Variable
),
'concat'
)
check_type
(
input
,
'input'
,
(
list
,
tuple
,
Variable
),
'concat'
)
if
not
isinstance
(
input
,
Variable
):
if
not
isinstance
(
input
,
Variable
):
for
id
,
x
in
enumerate
(
input
):
for
id
,
x
in
enumerate
(
input
):
...
@@ -1295,7 +1156,9 @@ def concat(x, axis=0, name=None):
...
@@ -1295,7 +1156,9 @@ def concat(x, axis=0, name=None):
)
)
helper
=
LayerHelper
(
'concat'
,
**
locals
())
helper
=
LayerHelper
(
'concat'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
()
)
if
input
[
0
].
desc
.
type
()
==
core
.
VarDesc
.
VarType
.
LOD_TENSOR_ARRAY
:
if
input
[
0
].
desc
.
type
()
==
core
.
VarDesc
.
VarType
.
LOD_TENSOR_ARRAY
:
# NOTE(liym27): Don't remove this if branch!
# NOTE(liym27): Don't remove this if branch!
...
@@ -1304,7 +1167,8 @@ def concat(x, axis=0, name=None):
...
@@ -1304,7 +1167,8 @@ def concat(x, axis=0, name=None):
assert
len
(
input
)
==
1
,
(
assert
len
(
input
)
==
1
,
(
"If the elements of 'input' in concat are Variable(LoDTensorArray), "
"If the elements of 'input' in concat are Variable(LoDTensorArray), "
"number of the elements must be 1, but received %s."
%
len
(
input
)
"number of the elements must be 1, but received %s."
%
len
(
input
)
)
)
out_index
=
helper
.
create_variable_for_type_inference
(
dtype
=
"int32"
)
out_index
=
helper
.
create_variable_for_type_inference
(
dtype
=
"int32"
)
helper
.
append_op
(
helper
.
append_op
(
...
@@ -1323,7 +1187,10 @@ def concat(x, axis=0, name=None):
...
@@ -1323,7 +1187,10 @@ def concat(x, axis=0, name=None):
attrs
[
'axis'
]
=
axis
attrs
[
'axis'
]
=
axis
helper
.
append_op
(
helper
.
append_op
(
type
=
'concat'
,
inputs
=
inputs
,
outputs
=
{
'Out'
:
[
out
]},
attrs
=
attrs
type
=
'concat'
,
inputs
=
inputs
,
outputs
=
{
'Out'
:
[
out
]},
attrs
=
attrs
,
)
)
return
out
return
out
...
@@ -1358,11 +1225,9 @@ def broadcast_tensors(input, name=None):
...
@@ -1358,11 +1225,9 @@ def broadcast_tensors(input, name=None):
"""
"""
num_inputs
=
len
(
input
)
num_inputs
=
len
(
input
)
if
paddle
.
framework
.
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
broadcast_tensors
(
input
)
return
_C_ops
.
broadcast_tensors
(
input
)
if
paddle
.
framework
.
_non_static_mode
():
else
:
return
_legacy_C_ops
.
broadcast_tensors
(
input
,
num_inputs
)
check_type
(
input
,
'input'
,
(
list
,
tuple
),
'broadcast_tensors'
)
check_type
(
input
,
'input'
,
(
list
,
tuple
),
'broadcast_tensors'
)
if
num_inputs
<
1
:
if
num_inputs
<
1
:
raise
TypeError
(
raise
TypeError
(
...
@@ -1428,7 +1293,10 @@ def broadcast_tensors(input, name=None):
...
@@ -1428,7 +1293,10 @@ def broadcast_tensors(input, name=None):
inputs
=
{
'X'
:
input
}
inputs
=
{
'X'
:
input
}
helper
.
append_op
(
helper
.
append_op
(
type
=
'broadcast_tensors'
,
inputs
=
inputs
,
outputs
=
{
'Out'
:
out
},
attrs
=
{}
type
=
'broadcast_tensors'
,
inputs
=
inputs
,
outputs
=
{
'Out'
:
out
},
attrs
=
{},
)
)
return
out
return
out
...
@@ -1465,10 +1333,7 @@ def flip(x, axis, name=None):
...
@@ -1465,10 +1333,7 @@ def flip(x, axis, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
flip
(
x
,
axis
)
return
_C_ops
.
flip
(
x
,
axis
)
else
:
if
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
flip
(
x
,
"axis"
,
axis
)
helper
=
LayerHelper
(
"flip"
,
**
locals
())
helper
=
LayerHelper
(
"flip"
,
**
locals
())
check_type
(
x
,
'X'
,
(
Variable
),
'flip'
)
check_type
(
x
,
'X'
,
(
Variable
),
'flip'
)
dtype
=
helper
.
input_dtype
(
'x'
)
dtype
=
helper
.
input_dtype
(
'x'
)
...
@@ -1482,10 +1347,15 @@ def flip(x, axis, name=None):
...
@@ -1482,10 +1347,15 @@ def flip(x, axis, name=None):
if
name
is
None
:
if
name
is
None
:
out
=
helper
.
create_variable_for_type_inference
(
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
)
else
:
else
:
out
=
helper
.
create_variable
(
name
=
name
,
dtype
=
dtype
,
persistable
=
False
)
out
=
helper
.
create_variable
(
name
=
name
,
dtype
=
dtype
,
persistable
=
False
)
helper
.
append_op
(
helper
.
append_op
(
type
=
"flip"
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
},
attrs
=
{
"axis"
:
axis
}
type
=
"flip"
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
},
attrs
=
{
"axis"
:
axis
},
)
)
return
out
return
out
...
@@ -1705,13 +1575,7 @@ def flatten(x, start_axis=0, stop_axis=-1, name=None):
...
@@ -1705,13 +1575,7 @@ def flatten(x, start_axis=0, stop_axis=-1, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
flatten
(
x
,
start_axis
,
stop_axis
)
return
_C_ops
.
flatten
(
x
,
start_axis
,
stop_axis
)
else
:
if
_in_legacy_dygraph
():
dy_out
,
_
=
_legacy_C_ops
.
flatten_contiguous_range
(
x
,
'start_axis'
,
start_axis
,
'stop_axis'
,
stop_axis
)
return
dy_out
helper
=
LayerHelper
(
'flatten'
,
**
locals
())
helper
=
LayerHelper
(
'flatten'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
x_shape
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
x_shape
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
...
@@ -1760,12 +1624,6 @@ def flatten_(x, start_axis=0, stop_axis=-1, name=None):
...
@@ -1760,12 +1624,6 @@ def flatten_(x, start_axis=0, stop_axis=-1, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
flatten_
(
x
,
start_axis
,
stop_axis
)
return
_C_ops
.
flatten_
(
x
,
start_axis
,
stop_axis
)
if
_in_legacy_dygraph
():
dy_out
,
_
=
_legacy_C_ops
.
flatten_contiguous_range_
(
x
,
'start_axis'
,
start_axis
,
'stop_axis'
,
stop_axis
)
return
dy_out
def
roll
(
x
,
shifts
,
axis
=
None
,
name
=
None
):
def
roll
(
x
,
shifts
,
axis
=
None
,
name
=
None
):
"""
"""
...
@@ -1830,10 +1688,7 @@ def roll(x, shifts, axis=None, name=None):
...
@@ -1830,10 +1688,7 @@ def roll(x, shifts, axis=None, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
roll
(
x
,
shifts
,
axis
)
return
_C_ops
.
roll
(
x
,
shifts
,
axis
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
roll
(
x
,
'axis'
,
axis
,
'shifts'
,
shifts
)
helper
=
LayerHelper
(
"roll"
,
**
locals
())
helper
=
LayerHelper
(
"roll"
,
**
locals
())
check_type
(
axis
,
'axis'
,
(
list
,
tuple
),
'roll'
)
check_type
(
axis
,
'axis'
,
(
list
,
tuple
),
'roll'
)
...
@@ -1947,10 +1802,7 @@ def stack(x, axis=0, name=None):
...
@@ -1947,10 +1802,7 @@ def stack(x, axis=0, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
stack
(
x
,
axis
)
return
_C_ops
.
stack
(
x
,
axis
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
stack
(
x
,
'axis'
,
axis
)
if
not
isinstance
(
x
,
list
)
and
not
isinstance
(
x
,
tuple
):
if
not
isinstance
(
x
,
list
)
and
not
isinstance
(
x
,
tuple
):
# NOTE:(zhiqiu) Only support Variable as input if the Variable is a LOD_TENSOR_ARRAY create by create_array, array_write, array_read, etc.
# NOTE:(zhiqiu) Only support Variable as input if the Variable is a LOD_TENSOR_ARRAY create by create_array, array_write, array_read, etc.
# In that case, Variable is array of tensors indeed.
# In that case, Variable is array of tensors indeed.
...
@@ -2055,7 +1907,7 @@ def split(x, num_or_sections, axis=0, name=None):
...
@@ -2055,7 +1907,7 @@ def split(x, num_or_sections, axis=0, name=None):
"""
"""
input
=
x
input
=
x
dim
=
axis
dim
=
axis
if
_non_static
_mode
():
if
in_dygraph
_mode
():
num
=
None
num
=
None
attrs
=
()
attrs
=
()
...
@@ -2085,16 +1937,11 @@ def split(x, num_or_sections, axis=0, name=None):
...
@@ -2085,16 +1937,11 @@ def split(x, num_or_sections, axis=0, name=None):
"The type of 'num_or_sections' in split must be int, list or tuple in imperative mode, but "
"The type of 'num_or_sections' in split must be int, list or tuple in imperative mode, but "
"received %s."
%
(
type
(
num_or_sections
))
"received %s."
%
(
type
(
num_or_sections
))
)
)
if
in_dygraph_mode
():
if
isinstance
(
num_or_sections
,
int
):
if
isinstance
(
num_or_sections
,
int
):
return
_C_ops
.
split_with_num
(
input
,
num_or_sections
,
dim
)
return
_C_ops
.
split_with_num
(
input
,
num_or_sections
,
dim
)
else
:
else
:
return
_C_ops
.
split
(
input
,
num_or_sections
,
dim
)
return
_C_ops
.
split
(
input
,
num_or_sections
,
dim
)
elif
_in_legacy_dygraph
():
else
:
out
=
[
_varbase_creator
()
for
n
in
range
(
num
)]
_legacy_C_ops
.
split
(
input
,
out
,
*
attrs
)
return
out
check_variable_and_dtype
(
check_variable_and_dtype
(
input
,
input
,
'input'
,
'input'
,
...
@@ -2110,7 +1957,9 @@ def split(x, num_or_sections, axis=0, name=None):
...
@@ -2110,7 +1957,9 @@ def split(x, num_or_sections, axis=0, name=None):
],
],
'split'
,
'split'
,
)
)
check_type
(
num_or_sections
,
'num_or_sections'
,
(
list
,
int
,
tuple
),
'split'
)
check_type
(
num_or_sections
,
'num_or_sections'
,
(
list
,
int
,
tuple
),
'split'
)
check_type
(
dim
,
'dim'
,
(
int
,
Variable
),
'split'
)
check_type
(
dim
,
'dim'
,
(
int
,
Variable
),
'split'
)
if
isinstance
(
dim
,
Variable
):
if
isinstance
(
dim
,
Variable
):
check_dtype
(
dim
.
dtype
,
'dim'
,
[
'int32'
,
'int64'
],
'split'
)
check_dtype
(
dim
.
dtype
,
'dim'
,
[
'int32'
,
'int64'
],
'split'
)
...
@@ -2119,7 +1968,9 @@ def split(x, num_or_sections, axis=0, name=None):
...
@@ -2119,7 +1968,9 @@ def split(x, num_or_sections, axis=0, name=None):
input_shape
=
input
.
shape
input_shape
=
input
.
shape
inputs
=
{
'X'
:
input
}
inputs
=
{
'X'
:
input
}
attrs
=
{
'num'
:
num_or_sections
if
isinstance
(
num_or_sections
,
int
)
else
0
}
attrs
=
{
'num'
:
num_or_sections
if
isinstance
(
num_or_sections
,
int
)
else
0
}
def
_get_SectionsTensorList
(
one_list
):
def
_get_SectionsTensorList
(
one_list
):
tensor_list
=
[]
tensor_list
=
[]
...
@@ -2137,7 +1988,9 @@ def split(x, num_or_sections, axis=0, name=None):
...
@@ -2137,7 +1988,9 @@ def split(x, num_or_sections, axis=0, name=None):
%
idx
%
idx
)
)
unk_dim_idx
=
idx
unk_dim_idx
=
idx
temp_out
=
helper
.
create_variable_for_type_inference
(
'int32'
)
temp_out
=
helper
.
create_variable_for_type_inference
(
'int32'
)
fill_constant
(
fill_constant
(
[
1
],
'int32'
,
dim_size
,
force_cpu
=
True
,
out
=
temp_out
[
1
],
'int32'
,
dim_size
,
force_cpu
=
True
,
out
=
temp_out
)
)
...
@@ -2180,7 +2033,9 @@ def split(x, num_or_sections, axis=0, name=None):
...
@@ -2180,7 +2033,9 @@ def split(x, num_or_sections, axis=0, name=None):
)
)
outs
=
[
outs
=
[
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
())
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
()
)
for
i
in
range
(
num
)
for
i
in
range
(
num
)
]
]
helper
.
append_op
(
helper
.
append_op
(
...
@@ -2317,10 +2172,7 @@ def squeeze(x, axis=None, name=None):
...
@@ -2317,10 +2172,7 @@ def squeeze(x, axis=None, name=None):
axes
=
axis
axes
=
axis
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
squeeze
(
input
,
axes
)
return
_C_ops
.
squeeze
(
input
,
axes
)
if
_in_legacy_dygraph
():
else
:
out
,
_
=
_legacy_C_ops
.
squeeze2
(
input
,
'axes'
,
axes
)
return
out
helper
=
LayerHelper
(
"squeeze"
,
**
locals
())
helper
=
LayerHelper
(
"squeeze"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
input
,
input
,
...
@@ -2379,9 +2231,6 @@ def squeeze_(x, axis=None, name=None):
...
@@ -2379,9 +2231,6 @@ def squeeze_(x, axis=None, name=None):
axes
=
axis
axes
=
axis
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
squeeze_
(
input
,
axes
)
return
_C_ops
.
squeeze_
(
input
,
axes
)
if
_in_legacy_dygraph
():
out
,
_
=
_legacy_C_ops
.
squeeze2_
(
input
,
'axes'
,
axes
)
return
out
def
unique_consecutive
(
def
unique_consecutive
(
...
@@ -2473,26 +2322,7 @@ def unique_consecutive(
...
@@ -2473,26 +2322,7 @@ def unique_consecutive(
if
len
(
outs
)
==
1
:
if
len
(
outs
)
==
1
:
return
outs
[
0
]
return
outs
[
0
]
return
tuple
(
outs
)
return
tuple
(
outs
)
elif
paddle
.
in_dynamic_mode
():
else
:
out
,
inverse
,
counts
=
_legacy_C_ops
.
unique_consecutive
(
x
,
'dtype'
,
attr_dtype
,
'return_inverse'
,
return_inverse
,
'return_counts'
,
return_counts
,
'axis'
,
axis
,
)
outs
=
[
out
]
if
return_inverse
:
outs
.
append
(
inverse
)
if
return_counts
:
outs
.
append
(
counts
)
if
len
(
outs
)
==
1
:
return
outs
[
0
]
return
tuple
(
outs
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
"input"
,
"input"
,
...
@@ -2527,7 +2357,10 @@ def unique_consecutive(
...
@@ -2527,7 +2357,10 @@ def unique_consecutive(
if
return_counts
:
if
return_counts
:
outs
.
append
(
counts
)
outs
.
append
(
counts
)
helper
.
append_op
(
helper
.
append_op
(
type
=
"unique_consecutive"
,
inputs
=
{
"X"
:
x
},
attrs
=
attrs
,
outputs
=
outputs
type
=
"unique_consecutive"
,
inputs
=
{
"X"
:
x
},
attrs
=
attrs
,
outputs
=
outputs
,
)
)
if
len
(
outs
)
==
1
:
if
len
(
outs
)
==
1
:
return
outs
[
0
]
return
outs
[
0
]
...
@@ -2604,27 +2437,10 @@ def unique(
...
@@ -2604,27 +2437,10 @@ def unique(
else
:
else
:
axis
=
[
axis
]
axis
=
[
axis
]
attr_dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
attr_dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
if
_non_static_mode
():
if
in_dygraph_mode
():
if
in_dygraph_mode
():
out
,
indices
,
inverse
,
counts
=
_C_ops
.
unique
(
out
,
indices
,
inverse
,
counts
=
_C_ops
.
unique
(
x
,
return_index
,
return_inverse
,
return_counts
,
axis
,
attr_dtype
x
,
return_index
,
return_inverse
,
return_counts
,
axis
,
attr_dtype
)
)
if
_in_legacy_dygraph
():
out
,
inverse
,
indices
,
counts
=
_legacy_C_ops
.
unique
(
x
,
'dtype'
,
attr_dtype
,
'return_index'
,
return_index
,
'return_inverse'
,
return_inverse
,
'return_counts'
,
return_counts
,
'axis'
,
axis
,
"is_sorted"
,
True
,
)
outs
=
[
out
]
outs
=
[
out
]
if
return_index
:
if
return_index
:
outs
.
append
(
indices
)
outs
.
append
(
indices
)
...
@@ -2637,7 +2453,7 @@ def unique(
...
@@ -2637,7 +2453,7 @@ def unique(
return
outs
[
0
]
return
outs
[
0
]
return
tuple
(
outs
)
return
tuple
(
outs
)
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
"input"
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'unique'
x
,
"input"
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'unique'
)
)
...
@@ -2741,7 +2557,7 @@ def unsqueeze(x, axis, name=None):
...
@@ -2741,7 +2557,7 @@ def unsqueeze(x, axis, name=None):
"""
"""
input
=
x
input
=
x
axes
=
axis
axes
=
axis
if
_non_static
_mode
():
if
in_dygraph
_mode
():
if
isinstance
(
axes
,
int
):
if
isinstance
(
axes
,
int
):
axes
=
[
axes
]
axes
=
[
axes
]
elif
isinstance
(
axes
,
Variable
):
elif
isinstance
(
axes
,
Variable
):
...
@@ -2751,11 +2567,8 @@ def unsqueeze(x, axis, name=None):
...
@@ -2751,11 +2567,8 @@ def unsqueeze(x, axis, name=None):
item
.
numpy
().
item
(
0
)
if
isinstance
(
item
,
Variable
)
else
item
item
.
numpy
().
item
(
0
)
if
isinstance
(
item
,
Variable
)
else
item
for
item
in
axes
for
item
in
axes
]
]
if
_in_legacy_dygraph
():
out
,
_
=
_legacy_C_ops
.
unsqueeze2
(
input
,
'axes'
,
axes
)
return
out
return
_C_ops
.
unsqueeze
(
input
,
axes
)
return
_C_ops
.
unsqueeze
(
input
,
axes
)
else
:
check_type
(
axes
,
'axis/axes'
,
(
int
,
list
,
tuple
,
Variable
),
'unsqueeze'
)
check_type
(
axes
,
'axis/axes'
,
(
int
,
list
,
tuple
,
Variable
),
'unsqueeze'
)
check_variable_and_dtype
(
check_variable_and_dtype
(
input
,
input
,
...
@@ -2818,10 +2631,7 @@ def unsqueeze_(x, axis, name=None):
...
@@ -2818,10 +2631,7 @@ def unsqueeze_(x, axis, name=None):
item
.
numpy
().
item
(
0
)
if
isinstance
(
item
,
Variable
)
else
item
item
.
numpy
().
item
(
0
)
if
isinstance
(
item
,
Variable
)
else
item
for
item
in
axes
for
item
in
axes
]
]
if
in_dygraph_mode
():
return
_C_ops
.
unsqueeze_
(
input
,
axes
)
return
_C_ops
.
unsqueeze_
(
input
,
axes
)
out
,
_
=
_legacy_C_ops
.
unsqueeze2_
(
input
,
'axes'
,
axes
)
return
out
def
gather
(
x
,
index
,
axis
=
None
,
name
=
None
):
def
gather
(
x
,
index
,
axis
=
None
,
name
=
None
):
...
@@ -2874,16 +2684,19 @@ def gather(x, index, axis=None, name=None):
...
@@ -2874,16 +2684,19 @@ def gather(x, index, axis=None, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
gather
(
x
,
index
,
axis
)
return
_C_ops
.
gather
(
x
,
index
,
axis
)
if
_in_legacy_dygraph
():
else
:
axis
=
axis
.
item
()
if
isinstance
(
axis
,
paddle
.
Tensor
)
else
axis
return
_legacy_C_ops
.
gather
(
x
,
index
,
None
,
"axis"
,
axis
,
"overwrite"
,
False
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int16'
,
'int32'
,
'int64'
,
'uint8'
],
[
'float16'
,
'float32'
,
'float64'
,
'int16'
,
'int32'
,
'int64'
,
'uint8'
,
],
'gather'
,
'gather'
,
)
)
check_variable_and_dtype
(
index
,
'index'
,
[
'int32'
,
'int64'
],
'gather'
)
check_variable_and_dtype
(
index
,
'index'
,
[
'int32'
,
'int64'
],
'gather'
)
...
@@ -2945,19 +2758,17 @@ def unbind(input, axis=0):
...
@@ -2945,19 +2758,17 @@ def unbind(input, axis=0):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
unbind
(
input
,
axis
)
return
_C_ops
.
unbind
(
input
,
axis
)
else
:
if
not
isinstance
(
axis
,
(
int
)):
if
not
isinstance
(
axis
,
(
int
)):
raise
TypeError
(
raise
TypeError
(
"The type of 'axis' must be int, but received %s."
%
(
type
(
axis
))
"The type of 'axis' must be int, but received %s."
%
(
type
(
axis
))
)
)
if
isinstance
(
axis
,
np
.
generic
):
if
isinstance
(
axis
,
np
.
generic
):
axis
=
np
.
asscalar
(
axis
)
axis
=
np
.
asscalar
(
axis
)
input_shape
=
input
.
shape
input_shape
=
input
.
shape
axis_
=
axis
if
axis
>=
0
else
len
(
input_shape
)
+
axis
axis_
=
axis
if
axis
>=
0
else
len
(
input_shape
)
+
axis
num
=
input_shape
[
axis_
]
num
=
input_shape
[
axis_
]
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
unbind
(
input
,
num
,
'axis'
,
axis
)
helper
=
LayerHelper
(
"unbind"
,
**
locals
())
helper
=
LayerHelper
(
"unbind"
,
**
locals
())
check_type
(
input
,
'input'
,
(
Variable
),
'unbind'
)
check_type
(
input
,
'input'
,
(
Variable
),
'unbind'
)
dtype
=
helper
.
input_dtype
()
dtype
=
helper
.
input_dtype
()
...
@@ -2965,7 +2776,9 @@ def unbind(input, axis=0):
...
@@ -2965,7 +2776,9 @@ def unbind(input, axis=0):
dtype
,
'unbind'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'unbind'
dtype
,
'unbind'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'unbind'
)
)
outs
=
[
outs
=
[
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
())
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
()
)
for
i
in
range
(
num
)
for
i
in
range
(
num
)
]
]
helper
.
append_op
(
helper
.
append_op
(
...
@@ -3053,11 +2866,6 @@ def scatter(x, index, updates, overwrite=True, name=None):
...
@@ -3053,11 +2866,6 @@ def scatter(x, index, updates, overwrite=True, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
scatter
(
x
,
index
,
updates
,
overwrite
)
return
_C_ops
.
scatter
(
x
,
index
,
updates
,
overwrite
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
scatter
(
x
,
index
,
updates
,
'overwrite'
,
overwrite
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -3083,9 +2891,7 @@ def scatter_(x, index, updates, overwrite=True, name=None):
...
@@ -3083,9 +2891,7 @@ def scatter_(x, index, updates, overwrite=True, name=None):
Inplace version of ``scatter`` API, the output Tensor will be inplaced with input ``x``.
Inplace version of ``scatter`` API, the output Tensor will be inplaced with input ``x``.
Please refer to :ref:`api_paddle_tensor_scatter`.
Please refer to :ref:`api_paddle_tensor_scatter`.
"""
"""
if
in_dygraph_mode
():
return
_C_ops
.
scatter_
(
x
,
index
,
updates
,
overwrite
)
return
_C_ops
.
scatter_
(
x
,
index
,
updates
,
overwrite
)
return
_legacy_C_ops
.
scatter_
(
x
,
index
,
updates
,
'overwrite'
,
overwrite
)
def
scatter_nd_add
(
x
,
index
,
updates
,
name
=
None
):
def
scatter_nd_add
(
x
,
index
,
updates
,
name
=
None
):
...
@@ -3159,10 +2965,6 @@ def scatter_nd_add(x, index, updates, name=None):
...
@@ -3159,10 +2965,6 @@ def scatter_nd_add(x, index, updates, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
scatter_nd_add
(
x
,
index
,
updates
)
return
_C_ops
.
scatter_nd_add
(
x
,
index
,
updates
)
else
:
if
_in_legacy_dygraph
():
op
=
getattr
(
_legacy_C_ops
,
'scatter_nd_add'
)
return
op
(
x
,
index
,
updates
)
else
:
else
:
if
x
.
dtype
!=
updates
.
dtype
:
if
x
.
dtype
!=
updates
.
dtype
:
raise
ValueError
(
"x and updates must have same data type."
)
raise
ValueError
(
"x and updates must have same data type."
)
...
@@ -3307,11 +3109,10 @@ def tile(x, repeat_times, name=None):
...
@@ -3307,11 +3109,10 @@ def tile(x, repeat_times, name=None):
repeat_times
=
repeat_times
.
numpy
().
tolist
()
repeat_times
=
repeat_times
.
numpy
().
tolist
()
return
_C_ops
.
tile
(
x
,
repeat_times
)
return
_C_ops
.
tile
(
x
,
repeat_times
)
else
:
if
_in_legacy_dygraph
():
check_type
(
return
_legacy_C_ops
.
tile
(
x
,
'repeat_times'
,
repeat_times
)
repeat_times
,
'repeat_times'
,
(
list
,
tuple
,
Variable
),
'tile'
)
check_type
(
repeat_times
,
'repeat_times'
,
(
list
,
tuple
,
Variable
),
'tile'
)
if
isinstance
(
repeat_times
,
Variable
):
if
isinstance
(
repeat_times
,
Variable
):
assert
(
assert
(
len
(
repeat_times
.
shape
)
==
1
len
(
repeat_times
.
shape
)
==
1
...
@@ -3404,12 +3205,12 @@ def expand_as(x, y, name=None):
...
@@ -3404,12 +3205,12 @@ def expand_as(x, y, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
expand_as
(
x
,
None
,
y
.
shape
)
return
_C_ops
.
expand_as
(
x
,
None
,
y
.
shape
)
else
:
if
_non_static_mode
():
return
_legacy_C_ops
.
expand_as_v2
(
x
,
'target_shape'
,
y
.
shape
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'bool'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'expand_as'
x
,
'x'
,
[
'bool'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'expand_as'
,
)
)
check_type
(
y
,
'y'
,
Variable
,
'expand_as'
)
check_type
(
y
,
'y'
,
Variable
,
'expand_as'
)
...
@@ -3463,9 +3264,7 @@ def broadcast_to(x, shape, name=None):
...
@@ -3463,9 +3264,7 @@ def broadcast_to(x, shape, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
expand
(
x
,
shape
)
return
_C_ops
.
expand
(
x
,
shape
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
expand_v2
(
x
,
'shape'
,
shape
)
if
isinstance
(
shape
,
Variable
):
if
isinstance
(
shape
,
Variable
):
assert
len
(
shape
.
shape
)
==
1
,
'shape must be an 1-D Tensor.'
assert
len
(
shape
.
shape
)
==
1
,
'shape must be an 1-D Tensor.'
else
:
else
:
...
@@ -3481,7 +3280,10 @@ def broadcast_to(x, shape, name=None):
...
@@ -3481,7 +3280,10 @@ def broadcast_to(x, shape, name=None):
),
'Elements in shape must be 1-D Tensors or integers.'
),
'Elements in shape must be 1-D Tensors or integers.'
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'bool'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'broadcast_to'
x
,
'x'
,
[
'bool'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'broadcast_to'
,
)
)
check_type
(
shape
,
'shape'
,
(
list
,
tuple
,
Variable
),
'broadcast_to'
)
check_type
(
shape
,
'shape'
,
(
list
,
tuple
,
Variable
),
'broadcast_to'
)
if
convert_dtype
(
x
.
dtype
)
==
'bool'
and
not
x
.
stop_gradient
:
if
convert_dtype
(
x
.
dtype
)
==
'bool'
and
not
x
.
stop_gradient
:
...
@@ -3557,10 +3359,7 @@ def expand(x, shape, name=None):
...
@@ -3557,10 +3359,7 @@ def expand(x, shape, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
expand
(
x
,
shape
)
return
_C_ops
.
expand
(
x
,
shape
)
else
:
if
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
expand_v2
(
x
,
'shape'
,
shape
)
if
isinstance
(
shape
,
Variable
):
if
isinstance
(
shape
,
Variable
):
assert
len
(
shape
.
shape
)
==
1
,
'shape must be an 1-D Tensor.'
assert
len
(
shape
.
shape
)
==
1
,
'shape must be an 1-D Tensor.'
else
:
else
:
...
@@ -3710,25 +3509,6 @@ def reshape(x, shape, name=None):
...
@@ -3710,25 +3509,6 @@ def reshape(x, shape, name=None):
return
out
return
out
else
:
else
:
if
_in_legacy_dygraph
():
tmp_tensor_type
=
Variable
if
isinstance
(
shape
,
(
list
,
tuple
)):
shape
=
[
item
.
numpy
().
item
(
0
)
if
isinstance
(
item
,
Variable
)
else
item
for
item
in
shape
]
out
,
_
=
_legacy_C_ops
.
reshape2
(
x
,
None
,
'shape'
,
shape
)
elif
isinstance
(
shape
,
tmp_tensor_type
):
shape
.
stop_gradient
=
True
out
,
_
=
_legacy_C_ops
.
reshape2
(
x
,
shape
)
else
:
raise
ValueError
(
"shape must be an instance of `list`, `tuple` or `Variable`,"
" got '{}.'"
.
format
(
type
(
shape
))
)
return
out
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
...
@@ -3745,7 +3525,9 @@ def reshape(x, shape, name=None):
...
@@ -3745,7 +3525,9 @@ def reshape(x, shape, name=None):
'reshape'
,
'reshape'
,
)
)
check_type
(
shape
,
'shape'
,
(
list
,
tuple
,
Variable
),
'reshape'
)
check_type
(
shape
,
'shape'
,
(
list
,
tuple
,
Variable
),
'reshape'
)
check_type
(
actual_shape
,
'actual_shape'
,
(
Variable
,
type
(
None
)),
'reshape'
)
check_type
(
actual_shape
,
'actual_shape'
,
(
Variable
,
type
(
None
)),
'reshape'
)
helper
=
LayerHelper
(
"reshape2"
,
**
locals
())
helper
=
LayerHelper
(
"reshape2"
,
**
locals
())
...
@@ -3844,24 +3626,6 @@ def reshape_(x, shape, name=None):
...
@@ -3844,24 +3626,6 @@ def reshape_(x, shape, name=None):
)
)
return
out
return
out
else
:
if
isinstance
(
shape
,
(
list
,
tuple
)):
shape
=
[
item
.
numpy
().
item
(
0
)
if
isinstance
(
item
,
Variable
)
else
item
for
item
in
shape
]
out
,
_
=
_legacy_C_ops
.
reshape2_
(
x
,
None
,
'shape'
,
shape
)
return
out
elif
isinstance
(
shape
,
Variable
):
shape
.
stop_gradient
=
True
# NOTE(pangyoki): Cannot support the case where the shape Tensor
# is negative. In the infer_shape stage, the input's dim will
# be changed to a negative number.
# Thus, convert Shape Tensor to list firstly and then call
# reshape inplace op.
shape_list
=
shape
.
numpy
().
tolist
()
out
,
_
=
_legacy_C_ops
.
reshape2_
(
x
,
None
,
'shape'
,
shape_list
)
return
out
def
gather_nd
(
x
,
index
,
name
=
None
):
def
gather_nd
(
x
,
index
,
name
=
None
):
...
@@ -3939,15 +3703,15 @@ def gather_nd(x, index, name=None):
...
@@ -3939,15 +3703,15 @@ def gather_nd(x, index, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
gather_nd
(
x
,
index
)
return
_C_ops
.
gather_nd
(
x
,
index
)
else
:
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
gather_nd
(
x
,
index
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
[
'bool'
,
'float32'
,
'float64'
,
'int16'
,
'int32'
,
'int64'
],
[
'bool'
,
'float32'
,
'float64'
,
'int16'
,
'int32'
,
'int64'
],
'gather_np'
,
'gather_np'
,
)
)
check_variable_and_dtype
(
index
,
'index'
,
[
'int32'
,
'int64'
],
'gather_np'
)
check_variable_and_dtype
(
index
,
'index'
,
[
'int32'
,
'int64'
],
'gather_np'
)
helper
=
LayerHelper
(
'gather_nd'
,
**
locals
())
helper
=
LayerHelper
(
'gather_nd'
,
**
locals
())
dtype
=
helper
.
input_dtype
()
dtype
=
helper
.
input_dtype
()
output
=
helper
.
create_variable_for_type_inference
(
dtype
)
output
=
helper
.
create_variable_for_type_inference
(
dtype
)
...
@@ -4043,7 +3807,7 @@ def strided_slice(x, axes, starts, ends, strides, name=None):
...
@@ -4043,7 +3807,7 @@ def strided_slice(x, axes, starts, ends, strides, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
strided_slice
(
x
,
axes
,
starts
,
ends
,
strides
)
return
_C_ops
.
strided_slice
(
x
,
axes
,
starts
,
ends
,
strides
)
else
:
helper
=
LayerHelper
(
'strided_slice'
,
**
locals
())
helper
=
LayerHelper
(
'strided_slice'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
...
@@ -4066,7 +3830,9 @@ def strided_slice(x, axes, starts, ends, strides, name=None):
...
@@ -4066,7 +3830,9 @@ def strided_slice(x, axes, starts, ends, strides, name=None):
for
i
,
var
in
enumerate
(
list_input
):
for
i
,
var
in
enumerate
(
list_input
):
var_name
=
input_name
+
'['
+
str
(
i
)
+
']'
var_name
=
input_name
+
'['
+
str
(
i
)
+
']'
if
isinstance
(
var
,
Variable
):
if
isinstance
(
var
,
Variable
):
check_dtype
(
var
.
dtype
,
var_name
,
[
'int32'
],
'strided_slice'
)
check_dtype
(
var
.
dtype
,
var_name
,
[
'int32'
],
'strided_slice'
)
check_list_elements_dtype
(
axes
,
'axes'
)
check_list_elements_dtype
(
axes
,
'axes'
)
check_list_elements_dtype
(
starts
,
'starts'
)
check_list_elements_dtype
(
starts
,
'starts'
)
...
@@ -4081,25 +3847,18 @@ def strided_slice(x, axes, starts, ends, strides, name=None):
...
@@ -4081,25 +3847,18 @@ def strided_slice(x, axes, starts, ends, strides, name=None):
new_list_tensor
.
append
(
dim
)
new_list_tensor
.
append
(
dim
)
else
:
else
:
assert
isinstance
(
dim
,
int
)
assert
isinstance
(
dim
,
int
)
temp_out
=
helper
.
create_variable_for_type_inference
(
'int32'
)
temp_out
=
helper
.
create_variable_for_type_inference
(
fill_constant
([
1
],
'int32'
,
dim
,
force_cpu
=
True
,
out
=
temp_out
)
'int32'
)
fill_constant
(
[
1
],
'int32'
,
dim
,
force_cpu
=
True
,
out
=
temp_out
)
new_list_tensor
.
append
(
temp_out
)
new_list_tensor
.
append
(
temp_out
)
return
new_list_tensor
return
new_list_tensor
inputs
=
{
'Input'
:
x
}
inputs
=
{
'Input'
:
x
}
attrs
=
{
'axes'
:
axes
}
attrs
=
{
'axes'
:
axes
}
infer_flags
=
list
(
1
for
i
in
range
(
len
(
axes
)))
infer_flags
=
list
(
1
for
i
in
range
(
len
(
axes
)))
if
_in_legacy_dygraph
():
inputs
=
{
'Input'
:
x
}
attrs
=
{
'axes'
:
axes
,
'starts'
:
starts
,
'ends'
:
ends
,
'strides'
:
strides
,
'infer_flags'
:
infer_flags
,
}
else
:
# starts
# starts
if
isinstance
(
starts
,
Variable
):
if
isinstance
(
starts
,
Variable
):
starts
.
stop_gradient
=
True
starts
.
stop_gradient
=
True
...
@@ -4155,7 +3914,10 @@ def strided_slice(x, axes, starts, ends, strides, name=None):
...
@@ -4155,7 +3914,10 @@ def strided_slice(x, axes, starts, ends, strides, name=None):
dtype
=
helper
.
input_dtype
(
'x'
)
dtype
=
helper
.
input_dtype
(
'x'
)
)
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'strided_slice'
,
inputs
=
inputs
,
attrs
=
attrs
,
outputs
=
{
'Out'
:
out
}
type
=
'strided_slice'
,
inputs
=
inputs
,
attrs
=
attrs
,
outputs
=
{
'Out'
:
out
},
)
)
return
out
return
out
...
@@ -4281,7 +4043,7 @@ def tensordot(x, y, axes=2, name=None):
...
@@ -4281,7 +4043,7 @@ def tensordot(x, y, axes=2, name=None):
check_type
(
axes
,
'axes'
,
(
int
,
tuple
,
list
,
Variable
),
op_type
)
check_type
(
axes
,
'axes'
,
(
int
,
tuple
,
list
,
Variable
),
op_type
)
def
_var_to_list
(
var
):
def
_var_to_list
(
var
):
if
paddle
.
in_dynamic
_mode
():
if
in_dygraph
_mode
():
return
tolist
(
var
)
return
tolist
(
var
)
raise
TypeError
(
raise
TypeError
(
"The 'axes' with type 'Tensor' in "
"The 'axes' with type 'Tensor' in "
...
@@ -4409,9 +4171,7 @@ def as_complex(x, name=None):
...
@@ -4409,9 +4171,7 @@ def as_complex(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
as_complex
(
x
)
return
_C_ops
.
as_complex
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
as_complex
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'as_complex'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'as_complex'
)
op_type
=
"as_complex"
op_type
=
"as_complex"
helper
=
LayerHelper
(
op_type
,
**
locals
())
helper
=
LayerHelper
(
op_type
,
**
locals
())
...
@@ -4421,7 +4181,9 @@ def as_complex(x, name=None):
...
@@ -4421,7 +4181,9 @@ def as_complex(x, name=None):
)
)
outputs
=
{
"Out"
:
out
}
outputs
=
{
"Out"
:
out
}
attrs
=
{}
attrs
=
{}
helper
.
append_op
(
type
=
op_type
,
inputs
=
inputs
,
attrs
=
attrs
,
outputs
=
outputs
)
helper
.
append_op
(
type
=
op_type
,
inputs
=
inputs
,
attrs
=
attrs
,
outputs
=
outputs
)
return
out
return
out
...
@@ -4462,9 +4224,7 @@ def as_real(x, name=None):
...
@@ -4462,9 +4224,7 @@ def as_real(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
as_real
(
x
)
return
_C_ops
.
as_real
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
as_real
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'complex64'
,
'complex128'
],
'as_real'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'complex64'
,
'complex128'
],
'as_real'
)
op_type
=
"as_real"
op_type
=
"as_real"
helper
=
LayerHelper
(
op_type
,
**
locals
())
helper
=
LayerHelper
(
op_type
,
**
locals
())
...
@@ -4633,11 +4393,7 @@ def moveaxis(x, source, destination, name=None):
...
@@ -4633,11 +4393,7 @@ def moveaxis(x, source, destination, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
out
=
_C_ops
.
transpose
(
x
,
perm
)
out
=
_C_ops
.
transpose
(
x
,
perm
)
return
out
return
out
else
:
if
_in_legacy_dygraph
():
out
,
_
=
_legacy_C_ops
.
transpose2
(
x
,
'axis'
,
perm
)
return
out
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
...
@@ -4727,15 +4483,14 @@ def take_along_axis(arr, indices, axis):
...
@@ -4727,15 +4483,14 @@ def take_along_axis(arr, indices, axis):
if
not
broadcast_shape
:
if
not
broadcast_shape
:
# if indices matrix have larger size than arr, arr should broadcast into indices shape.
# if indices matrix have larger size than arr, arr should broadcast into indices shape.
broadcast_shape
=
indices
.
shape
broadcast_shape
=
indices
.
shape
if
_non_static
_mode
():
if
in_dygraph
_mode
():
indices
=
paddle
.
broadcast_to
(
indices
,
broadcast_shape
)
indices
=
paddle
.
broadcast_to
(
indices
,
broadcast_shape
)
broadcast_shape_list
=
list
(
broadcast_shape
)
broadcast_shape_list
=
list
(
broadcast_shape
)
broadcast_shape_list
[
axis
]
=
list
(
arr
.
shape
)[
axis
]
broadcast_shape_list
[
axis
]
=
list
(
arr
.
shape
)[
axis
]
broadcast_shape
=
tuple
(
broadcast_shape_list
)
broadcast_shape
=
tuple
(
broadcast_shape_list
)
arr
=
paddle
.
broadcast_to
(
arr
,
broadcast_shape
)
arr
=
paddle
.
broadcast_to
(
arr
,
broadcast_shape
)
if
not
_in_legacy_dygraph
():
return
_C_ops
.
take_along_axis
(
arr
,
indices
,
axis
)
return
_C_ops
.
take_along_axis
(
arr
,
indices
,
axis
)
return
_legacy_C_ops
.
take_along_axis
(
arr
,
indices
,
'Axis'
,
axis
)
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
arr
,
arr
,
'x'
,
'x'
,
...
@@ -4797,7 +4552,7 @@ def put_along_axis(arr, indices, values, axis, reduce='assign'):
...
@@ -4797,7 +4552,7 @@ def put_along_axis(arr, indices, values, axis, reduce='assign'):
)
)
axis
=
non_negative_axis
(
arr
,
axis
)
axis
=
non_negative_axis
(
arr
,
axis
)
broadcast_shape
=
infer_broadcast_shape
(
arr
,
indices
,
axis
)
broadcast_shape
=
infer_broadcast_shape
(
arr
,
indices
,
axis
)
if
_non_static
_mode
():
if
in_dygraph
_mode
():
values
=
(
values
=
(
paddle
.
to_tensor
(
values
)
paddle
.
to_tensor
(
values
)
if
not
isinstance
(
values
,
paddle
.
Tensor
)
if
not
isinstance
(
values
,
paddle
.
Tensor
)
...
@@ -4806,12 +4561,8 @@ def put_along_axis(arr, indices, values, axis, reduce='assign'):
...
@@ -4806,12 +4561,8 @@ def put_along_axis(arr, indices, values, axis, reduce='assign'):
if
broadcast_shape
:
if
broadcast_shape
:
indices
=
paddle
.
broadcast_to
(
indices
,
broadcast_shape
)
indices
=
paddle
.
broadcast_to
(
indices
,
broadcast_shape
)
values
=
paddle
.
broadcast_to
(
values
,
indices
.
shape
)
values
=
paddle
.
broadcast_to
(
values
,
indices
.
shape
)
if
in_dygraph_mode
():
return
_C_ops
.
put_along_axis
(
arr
,
indices
,
values
,
axis
,
reduce
)
return
_C_ops
.
put_along_axis
(
arr
,
indices
,
values
,
axis
,
reduce
)
return
_legacy_C_ops
.
put_along_axis
(
else
:
arr
,
indices
,
values
,
"Axis"
,
axis
,
"Reduce"
,
reduce
)
check_variable_and_dtype
(
check_variable_and_dtype
(
arr
,
arr
,
'x'
,
'x'
,
...
@@ -4856,11 +4607,7 @@ def put_along_axis_(arr, indices, values, axis, reduce='assign'):
...
@@ -4856,11 +4607,7 @@ def put_along_axis_(arr, indices, values, axis, reduce='assign'):
if
broadcast_shape
:
if
broadcast_shape
:
indices
=
paddle
.
broadcast_to
(
indices
,
broadcast_shape
)
indices
=
paddle
.
broadcast_to
(
indices
,
broadcast_shape
)
values
=
paddle
.
broadcast_to
(
values
,
indices
.
shape
)
values
=
paddle
.
broadcast_to
(
values
,
indices
.
shape
)
if
in_dygraph_mode
():
return
_C_ops
.
put_along_axis_
(
arr
,
indices
,
values
,
axis
,
reduce
)
return
_C_ops
.
put_along_axis_
(
arr
,
indices
,
values
,
axis
,
reduce
)
return
_legacy_C_ops
.
put_along_axis_
(
arr
,
indices
,
values
,
"Axis"
,
axis
,
"Reduce"
,
reduce
)
def
index_add
(
x
,
index
,
axis
,
value
,
name
=
None
):
def
index_add
(
x
,
index
,
axis
,
value
,
name
=
None
):
...
...
python/paddle/tensor/math.py
浏览文件 @
861fef52
...
@@ -34,9 +34,6 @@ from ..fluid.data_feeder import (
...
@@ -34,9 +34,6 @@ from ..fluid.data_feeder import (
from
..fluid.layers
import
utils
from
..fluid.layers
import
utils
from
..framework
import
(
from
..framework
import
(
LayerHelper
,
LayerHelper
,
_in_legacy_dygraph
,
_non_static_mode
,
_varbase_creator
,
convert_np_dtype_to_dtype_
,
convert_np_dtype_to_dtype_
,
core
,
core
,
in_dygraph_mode
,
in_dygraph_mode
,
...
@@ -158,9 +155,7 @@ def log(x, name=None):
...
@@ -158,9 +155,7 @@ def log(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
log
(
x
)
return
_C_ops
.
log
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
log
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
"log"
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
"log"
)
inputs
=
{
'X'
:
[
x
]}
inputs
=
{
'X'
:
[
x
]}
helper
=
LayerHelper
(
'log'
,
**
locals
())
helper
=
LayerHelper
(
'log'
,
**
locals
())
...
@@ -220,19 +215,7 @@ def scale(x, scale=1.0, bias=0.0, bias_after_scale=True, act=None, name=None):
...
@@ -220,19 +215,7 @@ def scale(x, scale=1.0, bias=0.0, bias_after_scale=True, act=None, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
out
=
_C_ops
.
scale
(
x
,
scale
,
float
(
bias
),
bias_after_scale
)
out
=
_C_ops
.
scale
(
x
,
scale
,
float
(
bias
),
bias_after_scale
)
return
dygraph_utils
.
_append_activation_in_dygraph
(
out
,
act
)
return
dygraph_utils
.
_append_activation_in_dygraph
(
out
,
act
)
elif
_in_legacy_dygraph
():
else
:
_scale
=
scale
.
numpy
().
item
(
0
)
if
isinstance
(
scale
,
Variable
)
else
scale
out
=
_legacy_C_ops
.
scale
(
x
,
'scale'
,
float
(
_scale
),
'bias'
,
float
(
bias
),
'bias_after_scale'
,
bias_after_scale
,
)
return
dygraph_utils
.
_append_activation_in_dygraph
(
out
,
act
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
"x"
,
"x"
,
...
@@ -295,10 +278,12 @@ def stanh(x, scale_a=0.67, scale_b=1.7159, name=None):
...
@@ -295,10 +278,12 @@ def stanh(x, scale_a=0.67, scale_b=1.7159, name=None):
"""
"""
if
_non_static
_mode
():
if
in_dygraph
_mode
():
return
_legacy_C_ops
.
stanh
(
x
,
'scale_a'
,
scale_a
,
'scale_b'
,
scale_b
)
return
_legacy_C_ops
.
stanh
(
x
,
'scale_a'
,
scale_a
,
'scale_b'
,
scale_b
)
else
:
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'stanh'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'stanh'
)
helper
=
LayerHelper
(
'stanh'
,
**
locals
())
helper
=
LayerHelper
(
'stanh'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
...
@@ -363,9 +348,7 @@ def multiplex(inputs, index, name=None):
...
@@ -363,9 +348,7 @@ def multiplex(inputs, index, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
multiplex
(
inputs
,
index
)
return
_C_ops
.
multiplex
(
inputs
,
index
)
elif
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
multiplex
(
index
,
inputs
)
helper
=
LayerHelper
(
'multiplex'
,
**
locals
())
helper
=
LayerHelper
(
'multiplex'
,
**
locals
())
check_type
(
inputs
,
'inputs'
,
(
list
),
'multiplex'
)
check_type
(
inputs
,
'inputs'
,
(
list
),
'multiplex'
)
...
@@ -380,7 +363,9 @@ def multiplex(inputs, index, name=None):
...
@@ -380,7 +363,9 @@ def multiplex(inputs, index, name=None):
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'multiplex'
,
'multiplex'
,
)
)
check_variable_and_dtype
(
index
,
"index"
,
[
'int32'
,
'int64'
],
'multiplex'
)
check_variable_and_dtype
(
index
,
"index"
,
[
'int32'
,
'int64'
],
'multiplex'
)
out
=
helper
.
create_variable_for_type_inference
(
inputs
[
0
].
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
inputs
[
0
].
dtype
)
helper
.
append_op
(
helper
.
append_op
(
...
@@ -399,17 +384,6 @@ def scale_(x, scale=1.0, bias=0.0, bias_after_scale=True, act=None, name=None):
...
@@ -399,17 +384,6 @@ def scale_(x, scale=1.0, bias=0.0, bias_after_scale=True, act=None, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
scale_
(
x
,
scale
,
float
(
bias
),
bias_after_scale
)
return
_C_ops
.
scale_
(
x
,
scale
,
float
(
bias
),
bias_after_scale
)
if
_in_legacy_dygraph
():
_scale
=
scale
.
numpy
().
item
(
0
)
if
isinstance
(
scale
,
Variable
)
else
scale
return
_legacy_C_ops
.
scale_
(
x
,
'scale'
,
float
(
_scale
),
'bias'
,
float
(
bias
),
'bias_after_scale'
,
bias_after_scale
,
)
def
pow
(
x
,
y
,
name
=
None
):
def
pow
(
x
,
y
,
name
=
None
):
...
@@ -469,17 +443,7 @@ def pow(x, y, name=None):
...
@@ -469,17 +443,7 @@ def pow(x, y, name=None):
raise
TypeError
(
raise
TypeError
(
'y must be scalar or tensor type, but received: %s '
%
(
y
.
dtype
)
'y must be scalar or tensor type, but received: %s '
%
(
y
.
dtype
)
)
)
if
_in_legacy_dygraph
():
if
isinstance
(
y
,
(
int
,
float
)):
return
_legacy_C_ops
.
pow
(
x
,
'factor'
,
y
)
elif
isinstance
(
y
,
(
paddle
.
Tensor
,
Variable
)):
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=-
1
,
act
=
None
,
op_name
=
'elementwise_pow'
)
else
:
else
:
raise
TypeError
(
'y must be scalar or tensor type, but received: %s '
%
(
y
.
dtype
)
)
# in static graph mode
# in static graph mode
if
isinstance
(
y
,
(
int
,
float
)):
if
isinstance
(
y
,
(
int
,
float
)):
helper
=
LayerHelper
(
'pow'
,
**
locals
())
helper
=
LayerHelper
(
'pow'
,
**
locals
())
...
@@ -531,11 +495,6 @@ def _elementwise_op_in_dygraph(
...
@@ -531,11 +495,6 @@ def _elementwise_op_in_dygraph(
OP_NAMEMAPPING
[
op_name
]
if
not
is_inplace
(
op_name
)
else
op_name
,
OP_NAMEMAPPING
[
op_name
]
if
not
is_inplace
(
op_name
)
else
op_name
,
)
)
out
=
op
(
x
,
y
)
out
=
op
(
x
,
y
)
if
_in_legacy_dygraph
():
op
=
getattr
(
_legacy_C_ops
,
op_name
)
out
=
op
(
x
,
y
,
'axis'
,
axis
,
'use_mkldnn'
,
use_mkldnn
)
return
dygraph_utils
.
_append_activation_in_dygraph
(
return
dygraph_utils
.
_append_activation_in_dygraph
(
out
,
act
,
use_mkldnn
=
use_mkldnn
out
,
act
,
use_mkldnn
=
use_mkldnn
)
)
...
@@ -642,9 +601,6 @@ def add(x, y, name=None):
...
@@ -642,9 +601,6 @@ def add(x, y, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
add
(
x
,
y
)
return
_C_ops
.
add
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
elementwise_add
(
x
,
y
)
else
:
else
:
return
_elementwise_op
(
LayerHelper
(
'elementwise_add'
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
'elementwise_add'
,
**
locals
()))
...
@@ -734,11 +690,6 @@ def subtract(x, y, name=None):
...
@@ -734,11 +690,6 @@ def subtract(x, y, name=None):
act
=
None
act
=
None
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
subtract
(
x
,
y
)
return
_C_ops
.
subtract
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
else
:
else
:
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -806,11 +757,6 @@ def divide(x, y, name=None):
...
@@ -806,11 +757,6 @@ def divide(x, y, name=None):
act
=
None
act
=
None
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
divide
(
x
,
y
)
return
_C_ops
.
divide
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
else
:
else
:
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -853,9 +799,7 @@ def floor_divide(x, y, name=None):
...
@@ -853,9 +799,7 @@ def floor_divide(x, y, name=None):
axis
=
-
1
axis
=
-
1
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
floor_divide
(
x
,
y
)
return
_C_ops
.
floor_divide
(
x
,
y
)
elif
_in_legacy_dygraph
():
else
:
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
op_name
=
op_type
)
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -897,9 +841,7 @@ def remainder(x, y, name=None):
...
@@ -897,9 +841,7 @@ def remainder(x, y, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
remainder
(
x
,
y
)
return
_C_ops
.
remainder
(
x
,
y
)
elif
_in_legacy_dygraph
():
else
:
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
op_name
=
op_type
)
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -970,11 +912,6 @@ def multiply(x, y, name=None):
...
@@ -970,11 +912,6 @@ def multiply(x, y, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
multiply
(
x
,
y
)
return
_C_ops
.
multiply
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
else
:
else
:
if
x
.
dtype
!=
y
.
dtype
:
if
x
.
dtype
!=
y
.
dtype
:
raise
TypeError
(
raise
TypeError
(
...
@@ -1017,11 +954,6 @@ def _add_with_axis(x, y, axis=-1, name=None):
...
@@ -1017,11 +954,6 @@ def _add_with_axis(x, y, axis=-1, name=None):
else
:
else
:
op_type
=
'elementwise_add'
op_type
=
'elementwise_add'
act
=
None
act
=
None
if
_in_legacy_dygraph
():
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
else
:
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -1034,11 +966,6 @@ def _subtract_with_axis(x, y, axis=-1, name=None):
...
@@ -1034,11 +966,6 @@ def _subtract_with_axis(x, y, axis=-1, name=None):
else
:
else
:
op_type
=
'elementwise_sub'
op_type
=
'elementwise_sub'
act
=
None
act
=
None
if
_in_legacy_dygraph
():
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
else
:
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -1051,11 +978,6 @@ def _multiply_with_axis(x, y, axis=-1, name=None):
...
@@ -1051,11 +978,6 @@ def _multiply_with_axis(x, y, axis=-1, name=None):
else
:
else
:
op_type
=
'elementwise_mul'
op_type
=
'elementwise_mul'
act
=
None
act
=
None
if
_in_legacy_dygraph
():
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
else
:
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -1066,11 +988,6 @@ def _divide_with_axis(x, y, axis=-1, name=None):
...
@@ -1066,11 +988,6 @@ def _divide_with_axis(x, y, axis=-1, name=None):
else
:
else
:
op_type
=
'elementwise_div'
op_type
=
'elementwise_div'
act
=
None
act
=
None
if
_in_legacy_dygraph
():
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
else
:
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -1135,10 +1052,7 @@ def maximum(x, y, name=None):
...
@@ -1135,10 +1052,7 @@ def maximum(x, y, name=None):
act
=
None
act
=
None
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
maximum
(
x
,
y
)
return
_C_ops
.
maximum
(
x
,
y
)
elif
_in_legacy_dygraph
():
else
:
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -1203,10 +1117,7 @@ def minimum(x, y, name=None):
...
@@ -1203,10 +1117,7 @@ def minimum(x, y, name=None):
act
=
None
act
=
None
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
minimum
(
x
,
y
)
return
_C_ops
.
minimum
(
x
,
y
)
elif
_in_legacy_dygraph
():
else
:
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -1273,10 +1184,7 @@ def fmax(x, y, name=None):
...
@@ -1273,10 +1184,7 @@ def fmax(x, y, name=None):
act
=
None
act
=
None
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
fmax
(
x
,
y
)
return
_C_ops
.
fmax
(
x
,
y
)
if
_in_legacy_dygraph
():
else
:
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -1343,10 +1251,7 @@ def fmin(x, y, name=None):
...
@@ -1343,10 +1251,7 @@ def fmin(x, y, name=None):
act
=
None
act
=
None
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
fmin
(
x
,
y
)
return
_C_ops
.
fmin
(
x
,
y
)
if
_in_legacy_dygraph
():
else
:
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -1417,35 +1322,8 @@ def sum(x, axis=None, dtype=None, keepdim=False, name=None):
...
@@ -1417,35 +1322,8 @@ def sum(x, axis=None, dtype=None, keepdim=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
sum
(
x
,
axis
,
dtype
,
keepdim
)
return
_C_ops
.
sum
(
x
,
axis
,
dtype
,
keepdim
)
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
if
_in_legacy_dygraph
():
if
dtype_flag
:
return
_legacy_C_ops
.
reduce_sum
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
,
'in_dtype'
,
x
.
dtype
,
'out_dtype'
,
dtype
,
)
else
:
else
:
return
_legacy_C_ops
.
reduce_sum
(
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
,
)
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
keepdim
,
'reduce_all'
:
reduce_all
}
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
keepdim
,
'reduce_all'
:
reduce_all
}
if
dtype_flag
:
if
dtype_flag
:
...
@@ -1468,7 +1346,9 @@ def sum(x, axis=None, dtype=None, keepdim=False, name=None):
...
@@ -1468,7 +1346,9 @@ def sum(x, axis=None, dtype=None, keepdim=False, name=None):
'sum'
,
'sum'
,
)
)
check_type
(
axis
,
'axis'
,
(
int
,
list
,
tuple
,
type
(
None
),
Variable
),
'sum'
)
check_type
(
axis
,
'axis'
,
(
int
,
list
,
tuple
,
type
(
None
),
Variable
),
'sum'
)
helper
=
LayerHelper
(
'sum'
,
**
locals
())
helper
=
LayerHelper
(
'sum'
,
**
locals
())
if
dtype_flag
:
if
dtype_flag
:
...
@@ -1476,7 +1356,10 @@ def sum(x, axis=None, dtype=None, keepdim=False, name=None):
...
@@ -1476,7 +1356,10 @@ def sum(x, axis=None, dtype=None, keepdim=False, name=None):
else
:
else
:
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'reduce_sum'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
type
=
'reduce_sum'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
,
)
)
return
out
return
out
...
@@ -1784,11 +1667,7 @@ def add_n(inputs, name=None):
...
@@ -1784,11 +1667,7 @@ def add_n(inputs, name=None):
if
isinstance
(
inputs
,
Variable
):
if
isinstance
(
inputs
,
Variable
):
inputs
=
[
inputs
]
inputs
=
[
inputs
]
return
_C_ops
.
add_n
(
inputs
)
return
_C_ops
.
add_n
(
inputs
)
if
_in_legacy_dygraph
():
else
:
if
isinstance
(
inputs
,
Variable
):
inputs
=
[
inputs
]
return
_legacy_C_ops
.
sum
(
inputs
,
'use_mkldnn'
,
False
)
helper
=
LayerHelper
(
'add_n'
,
**
locals
())
helper
=
LayerHelper
(
'add_n'
,
**
locals
())
check_type
(
inputs
,
'inputs'
,
(
Variable
,
tuple
,
list
),
'add_n'
)
check_type
(
inputs
,
'inputs'
,
(
Variable
,
tuple
,
list
),
'add_n'
)
if
isinstance
(
inputs
,
list
)
or
isinstance
(
inputs
,
tuple
):
if
isinstance
(
inputs
,
list
)
or
isinstance
(
inputs
,
tuple
):
...
@@ -1851,9 +1730,6 @@ def trunc(input, name=None):
...
@@ -1851,9 +1730,6 @@ def trunc(input, name=None):
'''
'''
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
trunc
(
input
)
return
_C_ops
.
trunc
(
input
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
trunc
(
input
)
else
:
else
:
inputs
=
{
"X"
:
input
}
inputs
=
{
"X"
:
input
}
attrs
=
{}
attrs
=
{}
...
@@ -1939,8 +1815,7 @@ def mm(input, mat2, name=None):
...
@@ -1939,8 +1815,7 @@ def mm(input, mat2, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
matmul
(
input
,
mat2
,
False
,
False
)
return
_C_ops
.
matmul
(
input
,
mat2
,
False
,
False
)
elif
paddle
.
in_dynamic_mode
():
else
:
return
_legacy_C_ops
.
matmul_v2
(
input
,
mat2
)
def
__check_input
(
x
,
y
):
def
__check_input
(
x
,
y
):
var_names
=
{
'x'
:
x
,
'y'
:
y
}
var_names
=
{
'x'
:
x
,
'y'
:
y
}
...
@@ -1983,7 +1858,9 @@ def mm(input, mat2, name=None):
...
@@ -1983,7 +1858,9 @@ def mm(input, mat2, name=None):
helper
=
LayerHelper
(
'mm'
,
**
locals
())
helper
=
LayerHelper
(
'mm'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
input
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
input
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'matmul_v2'
,
inputs
=
{
'X'
:
input
,
'Y'
:
mat2
},
outputs
=
{
'Out'
:
out
}
type
=
'matmul_v2'
,
inputs
=
{
'X'
:
input
,
'Y'
:
mat2
},
outputs
=
{
'Out'
:
out
},
)
)
return
out
return
out
...
@@ -2079,10 +1956,6 @@ def addmm(input, x, y, beta=1.0, alpha=1.0, name=None):
...
@@ -2079,10 +1956,6 @@ def addmm(input, x, y, beta=1.0, alpha=1.0, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
addmm
(
input
,
x
,
y
,
beta
,
alpha
)
return
_C_ops
.
addmm
(
input
,
x
,
y
,
beta
,
alpha
)
else
:
if
_in_legacy_dygraph
():
out
=
_legacy_C_ops
.
addmm
(
input
,
x
,
y
,
"Alpha"
,
alpha
,
"Beta"
,
beta
)
return
out
else
:
else
:
inputs
=
{
'Input'
:
input
,
"X"
:
x
,
"Y"
:
y
}
inputs
=
{
'Input'
:
input
,
"X"
:
x
,
"Y"
:
y
}
attrs
=
{
'Alpha'
:
alpha
,
'Beta'
:
beta
}
attrs
=
{
'Alpha'
:
alpha
,
'Beta'
:
beta
}
...
@@ -2154,12 +2027,7 @@ def renorm(x, p, axis, max_norm):
...
@@ -2154,12 +2027,7 @@ def renorm(x, p, axis, max_norm):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
out
=
_C_ops
.
renorm
(
x
,
p
,
axis
,
max_norm
)
out
=
_C_ops
.
renorm
(
x
,
p
,
axis
,
max_norm
)
return
out
return
out
elif
_in_legacy_dygraph
():
else
:
out
=
_legacy_C_ops
.
renorm
(
x
,
'p'
,
p
,
'axis'
,
axis
,
'max_norm'
,
max_norm
)
return
out
inputs
=
{
'X'
:
x
}
inputs
=
{
'X'
:
x
}
attrs
=
{
'p'
:
p
,
'axis'
:
axis
,
'max_norm'
:
max_norm
}
attrs
=
{
'p'
:
p
,
'axis'
:
axis
,
'max_norm'
:
max_norm
}
...
@@ -2213,8 +2081,7 @@ def inner(x, y, name=None):
...
@@ -2213,8 +2081,7 @@ def inner(x, y, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
matmul
(
nx
,
ny
.
T
,
False
,
False
).
reshape
(
dstshape
)
return
_C_ops
.
matmul
(
nx
,
ny
.
T
,
False
,
False
).
reshape
(
dstshape
)
elif
paddle
.
in_dynamic_mode
():
else
:
return
_legacy_C_ops
.
matmul_v2
(
nx
,
ny
.
T
).
reshape
(
dstshape
)
def
__check_input
(
x
,
y
):
def
__check_input
(
x
,
y
):
var_names
=
{
'x'
:
x
,
'y'
:
y
}
var_names
=
{
'x'
:
x
,
'y'
:
y
}
...
@@ -2240,7 +2107,9 @@ def inner(x, y, name=None):
...
@@ -2240,7 +2107,9 @@ def inner(x, y, name=None):
helper
=
LayerHelper
(
'inner'
,
**
locals
())
helper
=
LayerHelper
(
'inner'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
nx
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
nx
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'matmul_v2'
,
inputs
=
{
'X'
:
nx
,
'Y'
:
ny
.
T
},
outputs
=
{
'Out'
:
out
}
type
=
'matmul_v2'
,
inputs
=
{
'X'
:
nx
,
'Y'
:
ny
.
T
},
outputs
=
{
'Out'
:
out
},
)
)
return
out
.
reshape
(
dstshape
)
return
out
.
reshape
(
dstshape
)
...
@@ -2279,8 +2148,7 @@ def outer(x, y, name=None):
...
@@ -2279,8 +2148,7 @@ def outer(x, y, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
matmul
(
nx
,
ny
,
False
,
False
)
return
_C_ops
.
matmul
(
nx
,
ny
,
False
,
False
)
elif
paddle
.
in_dynamic_mode
():
else
:
return
_legacy_C_ops
.
matmul_v2
(
nx
,
ny
)
def
__check_input
(
x
,
y
):
def
__check_input
(
x
,
y
):
var_names
=
{
'x'
:
x
,
'y'
:
y
}
var_names
=
{
'x'
:
x
,
'y'
:
y
}
...
@@ -2345,11 +2213,7 @@ def logsumexp(x, axis=None, keepdim=False, name=None):
...
@@ -2345,11 +2213,7 @@ def logsumexp(x, axis=None, keepdim=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
logsumexp
(
x
,
axis
,
keepdim
,
reduce_all
)
return
_C_ops
.
logsumexp
(
x
,
axis
,
keepdim
,
reduce_all
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
logsumexp
(
x
,
'axis'
,
axis
,
'keepdim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'logsumexp'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'logsumexp'
)
helper
=
LayerHelper
(
'logsumexp'
,
**
locals
())
helper
=
LayerHelper
(
'logsumexp'
,
**
locals
())
...
@@ -2390,8 +2254,7 @@ def inverse(x, name=None):
...
@@ -2390,8 +2254,7 @@ def inverse(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
inverse
(
x
)
return
_C_ops
.
inverse
(
x
)
elif
paddle
.
in_dynamic_mode
():
else
:
return
_legacy_C_ops
.
inverse
(
x
)
def
_check_input
(
x
):
def
_check_input
(
x
):
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'inverse'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'inverse'
)
...
@@ -2491,12 +2354,8 @@ def max(x, axis=None, keepdim=False, name=None):
...
@@ -2491,12 +2354,8 @@ def max(x, axis=None, keepdim=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
max
(
x
,
axis
,
keepdim
)
return
_C_ops
.
max
(
x
,
axis
,
keepdim
)
else
:
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
reduce_max
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
helper
=
LayerHelper
(
'max'
,
**
locals
())
helper
=
LayerHelper
(
'max'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'max'
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'max'
...
@@ -2593,13 +2452,8 @@ def min(x, axis=None, keepdim=False, name=None):
...
@@ -2593,13 +2452,8 @@ def min(x, axis=None, keepdim=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
min
(
x
,
axis
,
keepdim
)
return
_C_ops
.
min
(
x
,
axis
,
keepdim
)
else
:
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
reduce_min
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
helper
=
LayerHelper
(
'min'
,
**
locals
())
helper
=
LayerHelper
(
'min'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'min'
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'min'
...
@@ -2707,12 +2561,8 @@ def amax(x, axis=None, keepdim=False, name=None):
...
@@ -2707,12 +2561,8 @@ def amax(x, axis=None, keepdim=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
amax
(
x
,
axis
,
keepdim
)
return
_C_ops
.
amax
(
x
,
axis
,
keepdim
)
else
:
reduce_all
,
axis
=
_get_reduce_axis
(
axis
,
x
)
reduce_all
,
axis
=
_get_reduce_axis
(
axis
,
x
)
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
reduce_amax
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
helper
=
LayerHelper
(
'amax'
,
**
locals
())
helper
=
LayerHelper
(
'amax'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'amax'
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'amax'
...
@@ -2821,11 +2671,8 @@ def amin(x, axis=None, keepdim=False, name=None):
...
@@ -2821,11 +2671,8 @@ def amin(x, axis=None, keepdim=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
amin
(
x
,
axis
,
keepdim
)
return
_C_ops
.
amin
(
x
,
axis
,
keepdim
)
else
:
reduce_all
,
axis
=
_get_reduce_axis
(
axis
,
x
)
reduce_all
,
axis
=
_get_reduce_axis
(
axis
,
x
)
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
reduce_amin
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
helper
=
LayerHelper
(
'amin'
,
**
locals
())
helper
=
LayerHelper
(
'amin'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'amin'
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'amin'
...
@@ -2867,9 +2714,7 @@ def log1p(x, name=None):
...
@@ -2867,9 +2714,7 @@ def log1p(x, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
log1p
(
x
)
return
_C_ops
.
log1p
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
log1p
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
"log1p"
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
"log1p"
)
inputs
=
{
'X'
:
[
x
]}
inputs
=
{
'X'
:
[
x
]}
helper
=
LayerHelper
(
'log1p'
,
**
locals
())
helper
=
LayerHelper
(
'log1p'
,
**
locals
())
...
@@ -2919,10 +2764,10 @@ def log2(x, name=None):
...
@@ -2919,10 +2764,10 @@ def log2(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
log2
(
x
)
return
_C_ops
.
log2
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
log2
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
"log2"
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
"log2"
)
)
inputs
=
{
'X'
:
[
x
]}
inputs
=
{
'X'
:
[
x
]}
helper
=
LayerHelper
(
'log2'
,
**
locals
())
helper
=
LayerHelper
(
'log2'
,
**
locals
())
dtype
=
helper
.
input_dtype
(
input_param_name
=
'x'
)
dtype
=
helper
.
input_dtype
(
input_param_name
=
'x'
)
...
@@ -2971,10 +2816,10 @@ def log10(x, name=None):
...
@@ -2971,10 +2816,10 @@ def log10(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
log10
(
x
)
return
_C_ops
.
log10
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
log10
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
"log10"
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
"log10"
)
)
inputs
=
{
'X'
:
[
x
]}
inputs
=
{
'X'
:
[
x
]}
helper
=
LayerHelper
(
'log10'
,
**
locals
())
helper
=
LayerHelper
(
'log10'
,
**
locals
())
dtype
=
helper
.
input_dtype
(
input_param_name
=
'x'
)
dtype
=
helper
.
input_dtype
(
input_param_name
=
'x'
)
...
@@ -3038,16 +2883,7 @@ def clip(x, min=None, max=None, name=None):
...
@@ -3038,16 +2883,7 @@ def clip(x, min=None, max=None, name=None):
min
=
min_
if
min
is
None
else
min
min
=
min_
if
min
is
None
else
min
max
=
max_
if
max
is
None
else
max
max
=
max_
if
max
is
None
else
max
return
_C_ops
.
clip
(
x
,
min
,
max
)
return
_C_ops
.
clip
(
x
,
min
,
max
)
else
:
if
_in_legacy_dygraph
():
if
isinstance
(
min
,
Variable
):
min
=
min
.
numpy
().
item
(
0
)
if
isinstance
(
max
,
Variable
):
max
=
max
.
numpy
().
item
(
0
)
min
=
min_
if
min
is
None
else
min
max
=
max_
if
max
is
None
else
max
return
_legacy_C_ops
.
clip
(
x
,
"min"
,
min
,
"max"
,
max
)
if
min
is
not
None
:
if
min
is
not
None
:
check_type
(
min
,
'min'
,
(
float
,
int
,
Variable
),
'clip'
)
check_type
(
min
,
'min'
,
(
float
,
int
,
Variable
),
'clip'
)
if
isinstance
(
min
,
Variable
):
if
isinstance
(
min
,
Variable
):
...
@@ -3117,9 +2953,6 @@ def clip_(x, min=None, max=None, name=None):
...
@@ -3117,9 +2953,6 @@ def clip_(x, min=None, max=None, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
clip_
(
x
,
min
,
max
)
return
_C_ops
.
clip_
(
x
,
min
,
max
)
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
clip_
(
x
,
"min"
,
min
,
"max"
,
max
)
def
trace
(
x
,
offset
=
0
,
axis1
=
0
,
axis2
=
1
,
name
=
None
):
def
trace
(
x
,
offset
=
0
,
axis1
=
0
,
axis2
=
1
,
name
=
None
):
"""
"""
...
@@ -3196,12 +3029,7 @@ def trace(x, offset=0, axis1=0, axis2=1, name=None):
...
@@ -3196,12 +3029,7 @@ def trace(x, offset=0, axis1=0, axis2=1, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
trace
(
x
,
offset
,
axis1
,
axis2
)
return
_C_ops
.
trace
(
x
,
offset
,
axis1
,
axis2
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
trace
(
x
,
'offset'
,
offset
,
'axis1'
,
axis1
,
'axis2'
,
axis2
)
__check_input
(
x
,
offset
,
axis1
,
axis2
)
__check_input
(
x
,
offset
,
axis1
,
axis2
)
helper
=
LayerHelper
(
'trace'
,
**
locals
())
helper
=
LayerHelper
(
'trace'
,
**
locals
())
...
@@ -3284,10 +3112,6 @@ def diagonal(x, offset=0, axis1=0, axis2=1, name=None):
...
@@ -3284,10 +3112,6 @@ def diagonal(x, offset=0, axis1=0, axis2=1, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
diagonal
(
x
,
offset
,
axis1
,
axis2
)
return
_C_ops
.
diagonal
(
x
,
offset
,
axis1
,
axis2
)
else
:
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
diagonal
(
x
,
'offset'
,
offset
,
'axis1'
,
axis1
,
'axis2'
,
axis2
)
def
__check_input
(
x
,
offset
,
axis1
,
axis2
):
def
__check_input
(
x
,
offset
,
axis1
,
axis2
):
check_dtype
(
check_dtype
(
...
@@ -3363,10 +3187,9 @@ def kron(x, y, name=None):
...
@@ -3363,10 +3187,9 @@ def kron(x, y, name=None):
# [12, 15, 18, 16, 20, 24],
# [12, 15, 18, 16, 20, 24],
# [21, 24, 27, 28, 32, 36]])
# [21, 24, 27, 28, 32, 36]])
"""
"""
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
kron
(
x
,
y
)
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
kron
(
x
,
y
)
return
_legacy_C_ops
.
kron
(
x
,
y
)
else
:
helper
=
LayerHelper
(
'kron'
,
**
locals
())
helper
=
LayerHelper
(
'kron'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'kron'
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'kron'
...
@@ -3376,7 +3199,9 @@ def kron(x, y, name=None):
...
@@ -3376,7 +3199,9 @@ def kron(x, y, name=None):
)
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
"kron"
,
inputs
=
{
"X"
:
x
,
"Y"
:
y
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
"kron"
,
inputs
=
{
"X"
:
x
,
"Y"
:
y
},
outputs
=
{
"Out"
:
out
}
)
return
out
return
out
...
@@ -3432,12 +3257,7 @@ def cumsum(x, axis=None, dtype=None, name=None):
...
@@ -3432,12 +3257,7 @@ def cumsum(x, axis=None, dtype=None, name=None):
if
axis
is
None
:
if
axis
is
None
:
axis
=
-
1
axis
=
-
1
return
_C_ops
.
cumsum
(
x
,
axis
,
flatten
,
False
,
False
)
return
_C_ops
.
cumsum
(
x
,
axis
,
flatten
,
False
,
False
)
if
_in_legacy_dygraph
():
if
axis
is
None
:
return
_legacy_C_ops
.
cumsum
(
x
,
'flatten'
,
flatten
)
else
:
else
:
return
_legacy_C_ops
.
cumsum
(
x
,
'axis'
,
axis
,
'flatten'
,
flatten
)
check_type
(
x
,
'x'
,
(
Variable
),
'cumsum'
)
check_type
(
x
,
'x'
,
(
Variable
),
'cumsum'
)
locals_var
=
locals
().
copy
()
locals_var
=
locals
().
copy
()
kwargs
=
dict
()
kwargs
=
dict
()
...
@@ -3507,14 +3327,7 @@ def logcumsumexp(x, axis=None, dtype=None, name=None):
...
@@ -3507,14 +3327,7 @@ def logcumsumexp(x, axis=None, dtype=None, name=None):
if
axis
is
None
:
if
axis
is
None
:
axis
=
-
1
axis
=
-
1
return
_C_ops
.
logcumsumexp
(
x
,
axis
,
flatten
,
False
,
False
)
return
_C_ops
.
logcumsumexp
(
x
,
axis
,
flatten
,
False
,
False
)
if
_in_legacy_dygraph
():
if
axis
is
None
:
return
_legacy_C_ops
.
logcumsumexp
(
x
,
'flatten'
,
flatten
)
else
:
else
:
return
_legacy_C_ops
.
logcumsumexp
(
x
,
'axis'
,
axis
,
'flatten'
,
flatten
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
"logcumsumexp"
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
"logcumsumexp"
)
)
...
@@ -3586,9 +3399,7 @@ def cumprod(x, dim=None, dtype=None, name=None):
...
@@ -3586,9 +3399,7 @@ def cumprod(x, dim=None, dtype=None, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
cumprod
(
x
,
dim
)
return
_C_ops
.
cumprod
(
x
,
dim
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
cumprod
(
x
,
'dim'
,
dim
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
"x"
,
"x"
,
...
@@ -3631,14 +3442,18 @@ def isfinite(x, name=None):
...
@@ -3631,14 +3442,18 @@ def isfinite(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
isfinite
(
x
)
return
_C_ops
.
isfinite
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
isfinite_v2
(
x
)
helper
=
LayerHelper
(
"isfinite_v2"
,
**
locals
())
helper
=
LayerHelper
(
"isfinite_v2"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'isfinite'
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'isfinite'
,
)
)
out
=
helper
.
create_variable_for_type_inference
(
'bool'
)
out
=
helper
.
create_variable_for_type_inference
(
'bool'
)
helper
.
append_op
(
type
=
"isfinite_v2"
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
"isfinite_v2"
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
}
)
return
out
return
out
...
@@ -3665,8 +3480,7 @@ def isinf(x, name=None):
...
@@ -3665,8 +3480,7 @@ def isinf(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
isinf
(
x
)
return
_C_ops
.
isinf
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
isinf_v2
(
x
)
helper
=
LayerHelper
(
"isinf_v2"
,
**
locals
())
helper
=
LayerHelper
(
"isinf_v2"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'isinf'
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'isinf'
...
@@ -3699,9 +3513,7 @@ def isnan(x, name=None):
...
@@ -3699,9 +3513,7 @@ def isnan(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
isnan
(
x
)
return
_C_ops
.
isnan
(
x
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
isnan_v2
(
x
)
helper
=
LayerHelper
(
"isnan_v2"
,
**
locals
())
helper
=
LayerHelper
(
"isnan_v2"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'isnan'
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'isnan'
...
@@ -3775,17 +3587,17 @@ def prod(x, axis=None, keepdim=False, dtype=None, name=None):
...
@@ -3775,17 +3587,17 @@ def prod(x, axis=None, keepdim=False, dtype=None, name=None):
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
prod
(
x
,
axis
,
keepdim
,
reduce_all
)
return
_C_ops
.
prod
(
x
,
axis
,
keepdim
,
reduce_all
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
reduce_prod
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
helper
=
LayerHelper
(
'reduce_prod'
,
**
locals
())
helper
=
LayerHelper
(
'reduce_prod'
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x/input'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'reduce_prod'
x
,
'x/input'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'reduce_prod'
,
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
()
)
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
())
helper
.
append_op
(
helper
.
append_op
(
type
=
'reduce_prod'
,
type
=
'reduce_prod'
,
inputs
=
{
'X'
:
x
},
inputs
=
{
'X'
:
x
},
...
@@ -3817,11 +3629,10 @@ def sign(x, name=None):
...
@@ -3817,11 +3629,10 @@ def sign(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
sign
(
x
)
return
_C_ops
.
sign
(
x
)
else
:
if
_in_legacy_dygraph
():
check_variable_and_dtype
(
return
_legacy_C_ops
.
sign
(
x
)
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sign'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sign'
)
helper
=
LayerHelper
(
"sign"
,
**
locals
())
helper
=
LayerHelper
(
"sign"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
...
@@ -3857,11 +3668,10 @@ def tanh(x, name=None):
...
@@ -3857,11 +3668,10 @@ def tanh(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
tanh
(
x
)
return
_C_ops
.
tanh
(
x
)
else
:
if
_in_legacy_dygraph
():
check_variable_and_dtype
(
return
_legacy_C_ops
.
tanh
(
x
)
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'tanh'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'tanh'
)
check_type
(
x
,
'x'
,
(
Variable
),
'tanh'
)
check_type
(
x
,
'x'
,
(
Variable
),
'tanh'
)
helper
=
LayerHelper
(
'tanh'
,
**
locals
())
helper
=
LayerHelper
(
'tanh'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
...
@@ -3875,9 +3685,7 @@ def tanh_(x, name=None):
...
@@ -3875,9 +3685,7 @@ def tanh_(x, name=None):
Inplace version of ``tanh`` API, the output Tensor will be inplaced with input ``x``.
Inplace version of ``tanh`` API, the output Tensor will be inplaced with input ``x``.
Please refer to :ref:`api_tensor_tanh`.
Please refer to :ref:`api_tensor_tanh`.
"""
"""
if
in_dygraph_mode
():
return
_C_ops
.
tanh_
(
x
)
return
_C_ops
.
tanh_
(
x
)
return
_legacy_C_ops
.
tanh_
(
x
)
def
increment
(
x
,
value
=
1.0
,
name
=
None
):
def
increment
(
x
,
value
=
1.0
,
name
=
None
):
...
@@ -3905,10 +3713,7 @@ def increment(x, value=1.0, name=None):
...
@@ -3905,10 +3713,7 @@ def increment(x, value=1.0, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
increment_
(
x
,
value
)
return
_C_ops
.
increment_
(
x
,
value
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
increment
(
x
,
'step'
,
value
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'increment'
x
,
'x'
,
[
'float32'
,
'float64'
,
'int32'
,
'int64'
],
'increment'
)
)
...
@@ -3973,13 +3778,8 @@ def all(x, axis=None, keepdim=False, name=None):
...
@@ -3973,13 +3778,8 @@ def all(x, axis=None, keepdim=False, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
all
(
x
,
axis
,
keepdim
)
return
_C_ops
.
all
(
x
,
axis
,
keepdim
)
else
:
reduce_all
,
axis
=
_get_reduce_axis
(
axis
,
x
)
reduce_all
,
axis
=
_get_reduce_axis
(
axis
,
x
)
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
reduce_all
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
attrs
=
{
attrs
=
{
'dim'
:
axis
,
'dim'
:
axis
,
'keep_dim'
:
keepdim
,
'keep_dim'
:
keepdim
,
...
@@ -3992,7 +3792,10 @@ def all(x, axis=None, keepdim=False, name=None):
...
@@ -3992,7 +3792,10 @@ def all(x, axis=None, keepdim=False, name=None):
helper
=
LayerHelper
(
'all'
,
**
locals
())
helper
=
LayerHelper
(
'all'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'reduce_all'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
type
=
'reduce_all'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
,
)
)
return
out
return
out
...
@@ -4049,13 +3852,8 @@ def any(x, axis=None, keepdim=False, name=None):
...
@@ -4049,13 +3852,8 @@ def any(x, axis=None, keepdim=False, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
any
(
x
,
axis
,
keepdim
)
return
_C_ops
.
any
(
x
,
axis
,
keepdim
)
else
:
reduce_all
,
axis
=
_get_reduce_axis
(
axis
,
x
)
reduce_all
,
axis
=
_get_reduce_axis
(
axis
,
x
)
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
reduce_any
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
attrs
=
{
attrs
=
{
'dim'
:
axis
,
'dim'
:
axis
,
'keep_dim'
:
keepdim
,
'keep_dim'
:
keepdim
,
...
@@ -4069,7 +3867,10 @@ def any(x, axis=None, keepdim=False, name=None):
...
@@ -4069,7 +3867,10 @@ def any(x, axis=None, keepdim=False, name=None):
helper
=
LayerHelper
(
'any'
,
**
locals
())
helper
=
LayerHelper
(
'any'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'reduce_any'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
type
=
'reduce_any'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
,
)
)
return
out
return
out
...
@@ -4137,10 +3938,7 @@ def conj(x, name=None):
...
@@ -4137,10 +3938,7 @@ def conj(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
conj
(
x
)
return
_C_ops
.
conj
(
x
)
else
:
if
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
conj
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
"x"
,
"x"
,
...
@@ -4149,7 +3947,9 @@ def conj(x, name=None):
...
@@ -4149,7 +3947,9 @@ def conj(x, name=None):
)
)
helper
=
LayerHelper
(
'conj'
,
**
locals
())
helper
=
LayerHelper
(
'conj'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
helper
.
input_dtype
()
)
helper
.
append_op
(
type
=
'conj'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
[
out
]})
helper
.
append_op
(
type
=
'conj'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
[
out
]})
return
out
return
out
...
@@ -4184,9 +3984,6 @@ def digamma(x, name=None):
...
@@ -4184,9 +3984,6 @@ def digamma(x, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
digamma
(
x
)
return
_C_ops
.
digamma
(
x
)
else
:
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
digamma
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'digamma'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'digamma'
)
helper
=
LayerHelper
(
'digamma'
,
**
locals
())
helper
=
LayerHelper
(
'digamma'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
...
@@ -4221,9 +4018,7 @@ def lgamma(x, name=None):
...
@@ -4221,9 +4018,7 @@ def lgamma(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
lgamma
(
x
)
return
_C_ops
.
lgamma
(
x
)
elif
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
lgamma
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'lgamma'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'lgamma'
)
helper
=
LayerHelper
(
'lgamma'
,
**
locals
())
helper
=
LayerHelper
(
'lgamma'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
...
@@ -4303,9 +4098,6 @@ def atan2(x, y, name=None):
...
@@ -4303,9 +4098,6 @@ def atan2(x, y, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
atan2
(
x
,
y
)
return
_C_ops
.
atan2
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
atan2
(
x
,
y
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -4367,18 +4159,21 @@ def logit(x, eps=None, name=None):
...
@@ -4367,18 +4159,21 @@ def logit(x, eps=None, name=None):
# [-1.0277, -4.5365, -0.9544, -1.3269, 1.4468]
# [-1.0277, -4.5365, -0.9544, -1.3269, 1.4468]
"""
"""
if
eps
is
None
:
if
eps
is
None
:
eps
=
0.0
eps
=
0.0
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
logit
(
x
,
'eps'
,
eps
)
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
logit
(
x
,
eps
)
return
_C_ops
.
logit
(
x
,
eps
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'logit'
)
else
:
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'logit'
)
helper
=
LayerHelper
(
"logit"
,
**
locals
())
helper
=
LayerHelper
(
"logit"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'logit'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
{
'eps'
:
eps
}
type
=
'logit'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
{
'eps'
:
eps
},
)
)
return
out
return
out
...
@@ -4419,17 +4214,15 @@ def lerp(x, y, weight, name=None):
...
@@ -4419,17 +4214,15 @@ def lerp(x, y, weight, name=None):
weight
=
paddle
.
to_tensor
(
weight
,
dtype
=
x
.
dtype
)
weight
=
paddle
.
to_tensor
(
weight
,
dtype
=
x
.
dtype
)
return
_C_ops
.
lerp
(
x
,
y
,
weight
)
return
_C_ops
.
lerp
(
x
,
y
,
weight
)
if
_in_legacy_dygraph
():
else
:
if
isinstance
(
weight
,
float
):
weight
=
paddle
.
to_tensor
(
weight
,
dtype
=
x
.
dtype
)
return
_legacy_C_ops
.
lerp
(
x
,
y
,
weight
)
if
isinstance
(
weight
,
float
):
if
isinstance
(
weight
,
float
):
weight
=
paddle
.
full
(
shape
=
[
1
],
fill_value
=
weight
,
dtype
=
x
.
dtype
)
weight
=
paddle
.
full
(
shape
=
[
1
],
fill_value
=
weight
,
dtype
=
x
.
dtype
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'lerp'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'lerp'
)
check_variable_and_dtype
(
y
,
'y'
,
[
'float32'
,
'float64'
],
'lerp'
)
check_variable_and_dtype
(
y
,
'y'
,
[
'float32'
,
'float64'
],
'lerp'
)
check_variable_and_dtype
(
weight
,
'weight'
,
[
'float32'
,
'float64'
],
'lerp'
)
check_variable_and_dtype
(
weight
,
'weight'
,
[
'float32'
,
'float64'
],
'lerp'
)
helper
=
LayerHelper
(
'lerp'
,
**
locals
())
helper
=
LayerHelper
(
'lerp'
,
**
locals
())
inputs
=
{
'X'
:
x
,
'Y'
:
y
,
'Weight'
:
weight
}
inputs
=
{
'X'
:
x
,
'Y'
:
y
,
'Weight'
:
weight
}
...
@@ -4456,9 +4249,7 @@ def lerp_(x, y, weight, name=None):
...
@@ -4456,9 +4249,7 @@ def lerp_(x, y, weight, name=None):
out_shape
,
x
.
shape
out_shape
,
x
.
shape
)
)
)
)
if
in_dygraph_mode
():
return
_C_ops
.
lerp_
(
x
,
y
,
weight
)
return
_C_ops
.
lerp_
(
x
,
y
,
weight
)
return
_legacy_C_ops
.
lerp_
(
x
,
y
,
weight
)
def
erfinv
(
x
,
name
=
None
):
def
erfinv
(
x
,
name
=
None
):
...
@@ -4488,12 +4279,8 @@ def erfinv(x, name=None):
...
@@ -4488,12 +4279,8 @@ def erfinv(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
erfinv
(
x
)
return
_C_ops
.
erfinv
(
x
)
else
:
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'erfinv'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'erfinv'
)
if
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
erfinv
(
x
)
helper
=
LayerHelper
(
'erfinv'
,
**
locals
())
helper
=
LayerHelper
(
'erfinv'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'erfinv'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
})
helper
.
append_op
(
type
=
'erfinv'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
})
...
@@ -4507,9 +4294,7 @@ def erfinv_(x, name=None):
...
@@ -4507,9 +4294,7 @@ def erfinv_(x, name=None):
Please refer to :ref:`api_tensor_erfinv`.
Please refer to :ref:`api_tensor_erfinv`.
"""
"""
check_type
(
x
,
'x'
,
(
paddle
.
Tensor
,
Variable
),
'erfinv'
)
check_type
(
x
,
'x'
,
(
paddle
.
Tensor
,
Variable
),
'erfinv'
)
if
in_dygraph_mode
():
return
_C_ops
.
erfinv_
(
x
)
return
_C_ops
.
erfinv_
(
x
)
return
_legacy_C_ops
.
erfinv_
(
x
)
def
rad2deg
(
x
,
name
=
None
):
def
rad2deg
(
x
,
name
=
None
):
...
@@ -4558,10 +4343,6 @@ def rad2deg(x, name=None):
...
@@ -4558,10 +4343,6 @@ def rad2deg(x, name=None):
if
convert_dtype
(
x
.
dtype
)
in
[
'int32'
,
'int64'
]:
if
convert_dtype
(
x
.
dtype
)
in
[
'int32'
,
'int64'
]:
x
=
cast
(
x
,
dtype
=
"float32"
)
x
=
cast
(
x
,
dtype
=
"float32"
)
return
_C_ops
.
scale
(
x
,
rad2deg_scale
,
0.0
,
True
)
return
_C_ops
.
scale
(
x
,
rad2deg_scale
,
0.0
,
True
)
elif
paddle
.
in_dynamic_mode
():
if
convert_dtype
(
x
.
dtype
)
in
[
'int32'
,
'int64'
]:
x
=
cast
(
x
,
dtype
=
"float32"
)
return
_legacy_C_ops
.
scale
(
x
,
'scale'
,
rad2deg_scale
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'int32'
,
'int64'
,
'float32'
,
'float64'
],
'rad2deg'
x
,
'x'
,
[
'int32'
,
'int64'
,
'float32'
,
'float64'
],
'rad2deg'
...
@@ -4626,10 +4407,6 @@ def deg2rad(x, name=None):
...
@@ -4626,10 +4407,6 @@ def deg2rad(x, name=None):
if
convert_dtype
(
x
.
dtype
)
in
[
'int32'
,
'int64'
]:
if
convert_dtype
(
x
.
dtype
)
in
[
'int32'
,
'int64'
]:
x
=
cast
(
x
,
dtype
=
"float32"
)
x
=
cast
(
x
,
dtype
=
"float32"
)
return
_C_ops
.
scale
(
x
,
deg2rad_scale
,
0.0
,
True
)
return
_C_ops
.
scale
(
x
,
deg2rad_scale
,
0.0
,
True
)
elif
paddle
.
in_dynamic_mode
():
if
convert_dtype
(
x
.
dtype
)
in
[
'int32'
,
'int64'
]:
x
=
cast
(
x
,
dtype
=
"float32"
)
return
_legacy_C_ops
.
scale
(
x
,
'scale'
,
deg2rad_scale
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'int32'
,
'int64'
,
'float32'
,
'float64'
],
'deg2rad'
x
,
'x'
,
[
'int32'
,
'int64'
,
'float32'
,
'float64'
],
'deg2rad'
...
@@ -4729,7 +4506,7 @@ def gcd(x, y, name=None):
...
@@ -4729,7 +4506,7 @@ def gcd(x, y, name=None):
)
)
return
(
paddle
.
where
(
x
<
y
,
y
,
x
),
paddle
.
where
(
x
<
y
,
x
,
y
))
return
(
paddle
.
where
(
x
<
y
,
y
,
x
),
paddle
.
where
(
x
<
y
,
x
,
y
))
if
paddle
.
in_dynamic
_mode
():
if
in_dygraph
_mode
():
while
_gcd_cond_fn
(
x
,
y
):
while
_gcd_cond_fn
(
x
,
y
):
x
,
y
=
_gcd_body_fn
(
x
,
y
)
x
,
y
=
_gcd_body_fn
(
x
,
y
)
...
@@ -4907,68 +4684,6 @@ def diff(x, n=1, axis=-1, prepend=None, append=None, name=None):
...
@@ -4907,68 +4684,6 @@ def diff(x, n=1, axis=-1, prepend=None, append=None, name=None):
return
_C_ops
.
logical_xor
(
input_back
,
input_front
)
return
_C_ops
.
logical_xor
(
input_back
,
input_front
)
else
:
else
:
return
_C_ops
.
subtract
(
input_back
,
input_front
)
return
_C_ops
.
subtract
(
input_back
,
input_front
)
elif
_in_legacy_dygraph
():
has_pend
=
False
input_list
=
[]
if
prepend
is
not
None
and
append
is
not
None
:
input_list
=
[
prepend
,
x
,
append
]
has_pend
=
True
elif
prepend
is
not
None
:
input_list
=
[
prepend
,
x
]
has_pend
=
True
elif
append
is
not
None
:
input_list
=
[
x
,
append
]
has_pend
=
True
if
has_pend
:
new_input
=
_varbase_creator
()
_legacy_C_ops
.
concat
(
input_list
,
new_input
,
'axis'
,
axis
)
else
:
new_input
=
x
attrs_1
=
()
attrs_2
=
()
dim_len
=
new_input
.
shape
[
axis
]
starts_1
=
[
0
]
attrs_1
+=
(
'starts'
,
starts_1
)
ends_1
=
[
dim_len
-
1
]
attrs_1
+=
(
'ends'
,
ends_1
)
input_front
=
_legacy_C_ops
.
slice
(
new_input
,
None
,
None
,
None
,
None
,
'axes'
,
axes
,
'infer_flags'
,
infer_flags
,
*
attrs_1
)
starts_2
=
[
1
]
attrs_2
+=
(
'starts'
,
starts_2
)
ends_2
=
[
dim_len
]
attrs_2
+=
(
'ends'
,
ends_2
)
input_back
=
_legacy_C_ops
.
slice
(
new_input
,
None
,
None
,
None
,
None
,
'axes'
,
axes
,
'infer_flags'
,
infer_flags
,
*
attrs_2
)
if
x
.
dtype
==
paddle
.
bool
:
return
_legacy_C_ops
.
logical_xor
(
input_back
,
input_front
)
else
:
return
paddle
.
tensor
.
math
.
_subtract_with_axis
(
input_back
,
input_front
,
axis
=
axis
)
else
:
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
,
'bool'
,
'int32'
,
'int64'
],
'diff'
x
,
'x'
,
[
'float32'
,
'float64'
,
'bool'
,
'int32'
,
'int64'
],
'diff'
...
@@ -5082,9 +4797,7 @@ def angle(x, name=None):
...
@@ -5082,9 +4797,7 @@ def angle(x, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
angle
(
x
)
return
_C_ops
.
angle
(
x
)
elif
paddle
.
in_dynamic_mode
():
else
:
return
_legacy_C_ops
.
angle
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'angle'
x
,
'x'
,
[
'float32'
,
'float64'
,
'complex64'
,
'complex128'
],
'angle'
)
)
...
@@ -5143,10 +4856,11 @@ def heaviside(x, y, name=None):
...
@@ -5143,10 +4856,11 @@ def heaviside(x, y, name=None):
op_type
=
'elementwise_heaviside'
op_type
=
'elementwise_heaviside'
axis
=
-
1
axis
=
-
1
act
=
None
act
=
None
if
_non_static
_mode
():
if
in_dygraph
_mode
():
return
_elementwise_op_in_dygraph
(
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
)
else
:
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
return
_elementwise_op
(
LayerHelper
(
op_type
,
**
locals
()))
...
@@ -5191,12 +4905,6 @@ def frac(x, name=None):
...
@@ -5191,12 +4905,6 @@ def frac(x, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
y
=
_C_ops
.
trunc
(
x
)
y
=
_C_ops
.
trunc
(
x
)
return
_C_ops
.
subtract
(
x
,
y
)
return
_C_ops
.
subtract
(
x
,
y
)
else
:
if
_in_legacy_dygraph
():
y
=
_legacy_C_ops
.
trunc
(
x
)
return
_elementwise_op_in_dygraph
(
x
,
y
,
axis
=
axis
,
act
=
act
,
op_name
=
op_type
)
else
:
else
:
inputs
=
{
"X"
:
x
}
inputs
=
{
"X"
:
x
}
attrs
=
{}
attrs
=
{}
...
@@ -5334,7 +5042,7 @@ def take(x, index, mode='raise', name=None):
...
@@ -5334,7 +5042,7 @@ def take(x, index, mode='raise', name=None):
)
)
)
)
if
paddle
.
in_dynamic
_mode
():
if
in_dygraph
_mode
():
if
not
isinstance
(
index
,
(
paddle
.
Tensor
,
Variable
)):
if
not
isinstance
(
index
,
(
paddle
.
Tensor
,
Variable
)):
raise
TypeError
(
raise
TypeError
(
"The type of 'index' must be Tensor, but got {}"
.
format
(
"The type of 'index' must be Tensor, but got {}"
.
format
(
...
...
python/paddle/tensor/ops.py
浏览文件 @
861fef52
...
@@ -12,9 +12,9 @@
...
@@ -12,9 +12,9 @@
# See the License for the specific language governing permissions and
# See the License for the specific language governing permissions and
# limitations under the License.
# limitations under the License.
from
..
import
_C_ops
,
_legacy_C_ops
from
..
import
_C_ops
from
..fluid.data_feeder
import
check_variable_and_dtype
from
..fluid.data_feeder
import
check_variable_and_dtype
from
..fluid.framework
import
_in_legacy_dygraph
,
in_dygraph_mode
from
..fluid.framework
import
in_dygraph_mode
from
..framework
import
LayerHelper
from
..framework
import
LayerHelper
from
.layer_function_generator
import
(
from
.layer_function_generator
import
(
add_sample_code
,
add_sample_code
,
...
@@ -218,10 +218,10 @@ def acos(x, name=None):
...
@@ -218,10 +218,10 @@ def acos(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
acos
(
x
)
return
_C_ops
.
acos
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
acos
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'acos'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'acos'
)
)
helper
=
LayerHelper
(
'acos'
,
**
locals
())
helper
=
LayerHelper
(
'acos'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'acos'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'acos'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -255,10 +255,10 @@ def acosh(x, name=None):
...
@@ -255,10 +255,10 @@ def acosh(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
acosh
(
x
)
return
_C_ops
.
acosh
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
acosh
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'acosh'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'acosh'
)
)
helper
=
LayerHelper
(
'acosh'
,
**
locals
())
helper
=
LayerHelper
(
'acosh'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'acosh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'acosh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -292,10 +292,10 @@ def asin(x, name=None):
...
@@ -292,10 +292,10 @@ def asin(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
asin
(
x
)
return
_C_ops
.
asin
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
asin
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'asin'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'asin'
)
)
helper
=
LayerHelper
(
'asin'
,
**
locals
())
helper
=
LayerHelper
(
'asin'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'asin'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'asin'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -329,10 +329,10 @@ def asinh(x, name=None):
...
@@ -329,10 +329,10 @@ def asinh(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
asinh
(
x
)
return
_C_ops
.
asinh
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
asinh
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'asinh'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'asinh'
)
)
helper
=
LayerHelper
(
'asinh'
,
**
locals
())
helper
=
LayerHelper
(
'asinh'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'asinh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'asinh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -366,10 +366,10 @@ def atan(x, name=None):
...
@@ -366,10 +366,10 @@ def atan(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
atan
(
x
)
return
_C_ops
.
atan
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
atan
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'atan'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'atan'
)
)
helper
=
LayerHelper
(
'atan'
,
**
locals
())
helper
=
LayerHelper
(
'atan'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'atan'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'atan'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -403,10 +403,10 @@ def atanh(x, name=None):
...
@@ -403,10 +403,10 @@ def atanh(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
atanh
(
x
)
return
_C_ops
.
atanh
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
atanh
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'atanh'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'atanh'
)
)
helper
=
LayerHelper
(
'atanh'
,
**
locals
())
helper
=
LayerHelper
(
'atanh'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'atanh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'atanh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -441,10 +441,10 @@ def ceil(x, name=None):
...
@@ -441,10 +441,10 @@ def ceil(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
ceil
(
x
)
return
_C_ops
.
ceil
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
ceil
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'ceil'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'ceil'
)
)
helper
=
LayerHelper
(
'ceil'
,
**
locals
())
helper
=
LayerHelper
(
'ceil'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'ceil'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'ceil'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -480,10 +480,10 @@ def cos(x, name=None):
...
@@ -480,10 +480,10 @@ def cos(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
cos
(
x
)
return
_C_ops
.
cos
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
cos
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'cos'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'cos'
)
)
helper
=
LayerHelper
(
'cos'
,
**
locals
())
helper
=
LayerHelper
(
'cos'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'cos'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'cos'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -519,10 +519,10 @@ def cosh(x, name=None):
...
@@ -519,10 +519,10 @@ def cosh(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
cosh
(
x
)
return
_C_ops
.
cosh
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
cosh
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'cosh'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'cosh'
)
)
helper
=
LayerHelper
(
'cosh'
,
**
locals
())
helper
=
LayerHelper
(
'cosh'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'cosh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'cosh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -557,9 +557,7 @@ def exp(x, name=None):
...
@@ -557,9 +557,7 @@ def exp(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
exp
(
x
)
return
_C_ops
.
exp
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
exp
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
...
@@ -608,10 +606,10 @@ def expm1(x, name=None):
...
@@ -608,10 +606,10 @@ def expm1(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
expm1
(
x
)
return
_C_ops
.
expm1
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
expm1
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'expm1'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'expm1'
)
)
helper
=
LayerHelper
(
'expm1'
,
**
locals
())
helper
=
LayerHelper
(
'expm1'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'expm1'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'expm1'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -646,10 +644,10 @@ def floor(x, name=None):
...
@@ -646,10 +644,10 @@ def floor(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
floor
(
x
)
return
_C_ops
.
floor
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
floor
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'floor'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'floor'
)
)
helper
=
LayerHelper
(
'floor'
,
**
locals
())
helper
=
LayerHelper
(
'floor'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'floor'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'floor'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -684,15 +682,15 @@ def reciprocal(x, name=None):
...
@@ -684,15 +682,15 @@ def reciprocal(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
reciprocal
(
x
)
return
_C_ops
.
reciprocal
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
reciprocal
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'reciprocal'
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'reciprocal'
)
)
helper
=
LayerHelper
(
'reciprocal'
,
**
locals
())
helper
=
LayerHelper
(
'reciprocal'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'reciprocal'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'reciprocal'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
}
)
return
out
return
out
...
@@ -731,10 +729,10 @@ def round(x, name=None):
...
@@ -731,10 +729,10 @@ def round(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
round
(
x
)
return
_C_ops
.
round
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
round
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'round'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'round'
)
)
helper
=
LayerHelper
(
'round'
,
**
locals
())
helper
=
LayerHelper
(
'round'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'round'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'round'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -770,10 +768,10 @@ def rsqrt(x, name=None):
...
@@ -770,10 +768,10 @@ def rsqrt(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
rsqrt
(
x
)
return
_C_ops
.
rsqrt
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
rsqrt
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'rsqrt'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'rsqrt'
)
)
helper
=
LayerHelper
(
'rsqrt'
,
**
locals
())
helper
=
LayerHelper
(
'rsqrt'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'rsqrt'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'rsqrt'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -808,9 +806,7 @@ def sigmoid(x, name=None):
...
@@ -808,9 +806,7 @@ def sigmoid(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
sigmoid
(
x
)
return
_C_ops
.
sigmoid
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
sigmoid
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sigmoid'
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sigmoid'
)
)
...
@@ -847,10 +843,10 @@ def sin(x, name=None):
...
@@ -847,10 +843,10 @@ def sin(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
sin
(
x
)
return
_C_ops
.
sin
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
sin
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sin'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sin'
)
)
helper
=
LayerHelper
(
'sin'
,
**
locals
())
helper
=
LayerHelper
(
'sin'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'sin'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'sin'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -884,10 +880,10 @@ def sinh(x, name=None):
...
@@ -884,10 +880,10 @@ def sinh(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
sinh
(
x
)
return
_C_ops
.
sinh
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
sinh
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sinh'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sinh'
)
)
helper
=
LayerHelper
(
'sinh'
,
**
locals
())
helper
=
LayerHelper
(
'sinh'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'sinh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'sinh'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -920,10 +916,10 @@ def sqrt(x, name=None):
...
@@ -920,10 +916,10 @@ def sqrt(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
sqrt
(
x
)
return
_C_ops
.
sqrt
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
sqrt
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sqrt'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'sqrt'
)
)
helper
=
LayerHelper
(
'sqrt'
,
**
locals
())
helper
=
LayerHelper
(
'sqrt'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'sqrt'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'sqrt'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
@@ -956,9 +952,7 @@ def square(x, name=None):
...
@@ -956,9 +952,7 @@ def square(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
square
(
x
)
return
_C_ops
.
square
(
x
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
square
(
x
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
...
@@ -1008,10 +1002,10 @@ def tan(x, name=None):
...
@@ -1008,10 +1002,10 @@ def tan(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
tan
(
x
)
return
_C_ops
.
tan
(
x
)
if
_in_legacy_dygraph
()
:
else
:
return
_legacy_C_ops
.
tan
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'tan'
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'tan'
)
)
helper
=
LayerHelper
(
'tan'
,
**
locals
())
helper
=
LayerHelper
(
'tan'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'tan'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
helper
.
append_op
(
type
=
'tan'
,
inputs
=
{
"X"
:
x
},
outputs
=
{
"Out"
:
out
})
...
...
python/paddle/tensor/random.py
浏览文件 @
861fef52
...
@@ -16,11 +16,7 @@
...
@@ -16,11 +16,7 @@
import
paddle
import
paddle
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle.fluid.framework
import
(
from
paddle.fluid.framework
import
_current_expected_place
,
in_dygraph_mode
_current_expected_place
,
_in_legacy_dygraph
,
in_dygraph_mode
,
)
from
paddle.static
import
Variable
from
paddle.static
import
Variable
from
..fluid.data_feeder
import
(
from
..fluid.data_feeder
import
(
...
@@ -80,10 +76,7 @@ def bernoulli(x, name=None):
...
@@ -80,10 +76,7 @@ def bernoulli(x, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
bernoulli
(
x
)
return
_C_ops
.
bernoulli
(
x
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
bernoulli
(
x
)
check_variable_and_dtype
(
x
,
"x"
,
[
"float32"
,
"float64"
],
"bernoulli"
)
check_variable_and_dtype
(
x
,
"x"
,
[
"float32"
,
"float64"
],
"bernoulli"
)
helper
=
LayerHelper
(
"randint"
,
**
locals
())
helper
=
LayerHelper
(
"randint"
,
**
locals
())
...
@@ -129,10 +122,7 @@ def poisson(x, name=None):
...
@@ -129,10 +122,7 @@ def poisson(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
poisson
(
x
)
return
_C_ops
.
poisson
(
x
)
else
:
if
paddle
.
in_dynamic_mode
():
return
_legacy_C_ops
.
poisson
(
x
)
check_variable_and_dtype
(
x
,
"x"
,
[
"float32"
,
"float64"
],
"poisson"
)
check_variable_and_dtype
(
x
,
"x"
,
[
"float32"
,
"float64"
],
"poisson"
)
helper
=
LayerHelper
(
"poisson"
,
**
locals
())
helper
=
LayerHelper
(
"poisson"
,
**
locals
())
...
@@ -197,12 +187,7 @@ def multinomial(x, num_samples=1, replacement=False, name=None):
...
@@ -197,12 +187,7 @@ def multinomial(x, num_samples=1, replacement=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
multinomial
(
x
,
num_samples
,
replacement
)
return
_C_ops
.
multinomial
(
x
,
num_samples
,
replacement
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
multinomial
(
x
,
'num_samples'
,
num_samples
,
'replacement'
,
replacement
)
check_variable_and_dtype
(
x
,
"x"
,
[
"float32"
,
"float64"
],
"multinomial"
)
check_variable_and_dtype
(
x
,
"x"
,
[
"float32"
,
"float64"
],
"multinomial"
)
helper
=
LayerHelper
(
"multinomial"
,
**
locals
())
helper
=
LayerHelper
(
"multinomial"
,
**
locals
())
...
@@ -356,22 +341,7 @@ def gaussian(shape, mean=0.0, std=1.0, seed=0, dtype=None, name=None):
...
@@ -356,22 +341,7 @@ def gaussian(shape, mean=0.0, std=1.0, seed=0, dtype=None, name=None):
return
_C_ops
.
gaussian
(
return
_C_ops
.
gaussian
(
shape
,
float
(
mean
),
float
(
std
),
seed
,
dtype
,
place
shape
,
float
(
mean
),
float
(
std
),
seed
,
dtype
,
place
)
)
else
:
if
_in_legacy_dygraph
():
shape
=
utils
.
convert_shape_to_list
(
shape
)
return
_legacy_C_ops
.
gaussian_random
(
'shape'
,
shape
,
'mean'
,
float
(
mean
),
'std'
,
float
(
std
),
'seed'
,
seed
,
'dtype'
,
dtype
,
)
check_shape
(
shape
,
op_type_for_check
)
check_shape
(
shape
,
op_type_for_check
)
check_dtype
(
dtype
,
'dtype'
,
[
'float32'
,
'float64'
],
op_type_for_check
)
check_dtype
(
dtype
,
'dtype'
,
[
'float32'
,
'float64'
],
op_type_for_check
)
...
@@ -390,7 +360,10 @@ def gaussian(shape, mean=0.0, std=1.0, seed=0, dtype=None, name=None):
...
@@ -390,7 +360,10 @@ def gaussian(shape, mean=0.0, std=1.0, seed=0, dtype=None, name=None):
helper
=
LayerHelper
(
'gaussian'
,
**
locals
())
helper
=
LayerHelper
(
'gaussian'
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'gaussian_random'
,
inputs
=
inputs
,
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
type
=
'gaussian_random'
,
inputs
=
inputs
,
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
,
)
)
out
.
stop_gradient
=
True
out
.
stop_gradient
=
True
return
out
return
out
...
@@ -550,7 +523,7 @@ def normal(mean=0.0, std=1.0, shape=None, name=None):
...
@@ -550,7 +523,7 @@ def normal(mean=0.0, std=1.0, shape=None, name=None):
# [1.00780561 3.78457445 5.81058198] # random
# [1.00780561 3.78457445 5.81058198] # random
"""
"""
if
not
paddle
.
in_dynamic
_mode
():
if
not
in_dygraph
_mode
():
check_type
(
mean
,
'mean'
,
(
int
,
float
,
Variable
),
'normal'
)
check_type
(
mean
,
'mean'
,
(
int
,
float
,
Variable
),
'normal'
)
check_type
(
std
,
'std'
,
(
int
,
float
,
Variable
),
'normal'
)
check_type
(
std
,
'std'
,
(
int
,
float
,
Variable
),
'normal'
)
if
isinstance
(
mean
,
Variable
):
if
isinstance
(
mean
,
Variable
):
...
@@ -588,7 +561,7 @@ def normal(mean=0.0, std=1.0, shape=None, name=None):
...
@@ -588,7 +561,7 @@ def normal(mean=0.0, std=1.0, shape=None, name=None):
return
gaussian
(
shape
=
shape
,
mean
=
mean
,
std
=
std
,
name
=
name
)
return
gaussian
(
shape
=
shape
,
mean
=
mean
,
std
=
std
,
name
=
name
)
out
=
out
*
std
+
mean
out
=
out
*
std
+
mean
if
not
paddle
.
in_dynamic
_mode
():
if
not
in_dygraph
_mode
():
out
.
stop_grediant
=
True
out
.
stop_grediant
=
True
return
out
return
out
...
@@ -680,22 +653,7 @@ def uniform(shape, dtype=None, min=-1.0, max=1.0, seed=0, name=None):
...
@@ -680,22 +653,7 @@ def uniform(shape, dtype=None, min=-1.0, max=1.0, seed=0, name=None):
seed
,
seed
,
_current_expected_place
(),
_current_expected_place
(),
)
)
else
:
if
_in_legacy_dygraph
():
shape
=
utils
.
convert_shape_to_list
(
shape
)
return
_legacy_C_ops
.
uniform_random
(
'shape'
,
shape
,
'min'
,
float
(
min
),
'max'
,
float
(
max
),
'seed'
,
seed
,
'dtype'
,
dtype
,
)
check_type
(
shape
,
'shape'
,
(
list
,
tuple
,
Variable
),
'uniform/rand'
)
check_type
(
shape
,
'shape'
,
(
list
,
tuple
,
Variable
),
'uniform/rand'
)
check_dtype
(
dtype
,
'dtype'
,
(
'float32'
,
'float64'
),
'uniform/rand'
)
check_dtype
(
dtype
,
'dtype'
,
(
'float32'
,
'float64'
),
'uniform/rand'
)
check_type
(
min
,
'min'
,
(
float
,
int
,
Variable
),
'uniform/rand'
)
check_type
(
min
,
'min'
,
(
float
,
int
,
Variable
),
'uniform/rand'
)
...
@@ -710,7 +668,10 @@ def uniform(shape, dtype=None, min=-1.0, max=1.0, seed=0, name=None):
...
@@ -710,7 +668,10 @@ def uniform(shape, dtype=None, min=-1.0, max=1.0, seed=0, name=None):
helper
=
LayerHelper
(
"uniform"
,
**
locals
())
helper
=
LayerHelper
(
"uniform"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
"uniform_random"
,
inputs
=
inputs
,
attrs
=
attrs
,
outputs
=
{
"Out"
:
out
}
type
=
"uniform_random"
,
inputs
=
inputs
,
attrs
=
attrs
,
outputs
=
{
"Out"
:
out
},
)
)
out
.
stop_gradient
=
True
out
.
stop_gradient
=
True
return
out
return
out
...
@@ -751,12 +712,7 @@ def uniform_(x, min=-1.0, max=1.0, seed=0, name=None):
...
@@ -751,12 +712,7 @@ def uniform_(x, min=-1.0, max=1.0, seed=0, name=None):
# [-0.34646994, -0.45116323, -0.09902662, -0.11397249], # random
# [-0.34646994, -0.45116323, -0.09902662, -0.11397249], # random
# [ 0.433519, 0.39483607, -0.8660099, 0.83664286]] # random
# [ 0.433519, 0.39483607, -0.8660099, 0.83664286]] # random
"""
"""
if
in_dygraph_mode
():
return
_C_ops
.
uniform_inplace_
(
x
,
min
,
max
,
seed
,
0
,
0
,
1.0
)
return
_C_ops
.
uniform_inplace_
(
x
,
min
,
max
,
seed
,
0
,
0
,
1.0
)
else
:
return
_legacy_C_ops
.
uniform_random_inplace_
(
x
,
'min'
,
min
,
'max'
,
max
,
'seed'
,
seed
)
def
randint
(
low
=
0
,
high
=
None
,
shape
=
[
1
],
dtype
=
None
,
name
=
None
):
def
randint
(
low
=
0
,
high
=
None
,
shape
=
[
1
],
dtype
=
None
,
name
=
None
):
...
@@ -841,12 +797,7 @@ def randint(low=0, high=None, shape=[1], dtype=None, name=None):
...
@@ -841,12 +797,7 @@ def randint(low=0, high=None, shape=[1], dtype=None, name=None):
shape
=
utils
.
convert_shape_to_list
(
shape
)
shape
=
utils
.
convert_shape_to_list
(
shape
)
place
=
_current_expected_place
()
place
=
_current_expected_place
()
return
_C_ops
.
randint
(
low
,
high
,
shape
,
dtype
,
place
)
return
_C_ops
.
randint
(
low
,
high
,
shape
,
dtype
,
place
)
if
_in_legacy_dygraph
():
else
:
shape
=
utils
.
convert_shape_to_list
(
shape
)
return
_legacy_C_ops
.
randint
(
'shape'
,
shape
,
'low'
,
low
,
'high'
,
high
,
'seed'
,
0
,
'dtype'
,
dtype
)
check_shape
(
shape
,
'randint'
)
check_shape
(
shape
,
'randint'
)
check_dtype
(
dtype
,
'dtype'
,
[
'int32'
,
'int64'
],
'randint'
)
check_dtype
(
dtype
,
'dtype'
,
[
'int32'
,
'int64'
],
'randint'
)
if
low
>=
high
:
if
low
>=
high
:
...
@@ -1015,7 +966,7 @@ def randint_like(x, low=0, high=None, dtype=None, name=None):
...
@@ -1015,7 +966,7 @@ def randint_like(x, low=0, high=None, dtype=None, name=None):
"high = {1}"
.
format
(
low
,
high
)
"high = {1}"
.
format
(
low
,
high
)
)
)
if
paddle
.
in_dynamic
_mode
():
if
in_dygraph
_mode
():
shape
=
utils
.
convert_shape_to_list
(
shape
)
shape
=
utils
.
convert_shape_to_list
(
shape
)
out
=
_legacy_C_ops
.
randint
(
out
=
_legacy_C_ops
.
randint
(
'shape'
,
'shape'
,
...
@@ -1031,7 +982,7 @@ def randint_like(x, low=0, high=None, dtype=None, name=None):
...
@@ -1031,7 +982,7 @@ def randint_like(x, low=0, high=None, dtype=None, name=None):
)
)
out
=
paddle
.
cast
(
out
,
dtype
)
out
=
paddle
.
cast
(
out
,
dtype
)
return
out
return
out
else
:
check_shape
(
shape
,
'randint_like'
)
check_shape
(
shape
,
'randint_like'
)
check_dtype
(
check_dtype
(
dtype
,
dtype
,
...
@@ -1095,11 +1046,11 @@ def randperm(n, dtype="int64", name=None):
...
@@ -1095,11 +1046,11 @@ def randperm(n, dtype="int64", name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
randperm
(
n
,
dtype
,
_current_expected_place
())
return
_C_ops
.
randperm
(
n
,
dtype
,
_current_expected_place
())
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
randperm
(
'n'
,
n
,
'seed'
,
0
,
'dtype'
,
dtype
)
if
n
<
1
:
if
n
<
1
:
raise
ValueError
(
"The input n should be greater than 0 in randperm op."
)
raise
ValueError
(
"The input n should be greater than 0 in randperm op."
)
check_dtype
(
check_dtype
(
dtype
,
'dtype'
,
[
'int64'
,
'int32'
,
'float32'
,
'float64'
],
'randperm'
dtype
,
'dtype'
,
[
'int64'
,
'int32'
,
'float32'
,
'float64'
],
'randperm'
)
)
...
@@ -1199,9 +1150,7 @@ def exponential_(x, lam=1.0, name=None):
...
@@ -1199,9 +1150,7 @@ def exponential_(x, lam=1.0, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
exponential_
(
x
,
lam
)
return
_C_ops
.
exponential_
(
x
,
lam
)
elif
paddle
.
in_dynamic_mode
():
else
:
return
_legacy_C_ops
.
exponential_
(
x
,
"lambda"
,
lam
)
check_variable_and_dtype
(
x
,
"x"
,
[
"float32"
,
"float64"
],
"exponential"
)
check_variable_and_dtype
(
x
,
"x"
,
[
"float32"
,
"float64"
],
"exponential"
)
helper
=
LayerHelper
(
"exponential"
,
**
locals
())
helper
=
LayerHelper
(
"exponential"
,
**
locals
())
...
...
python/paddle/tensor/search.py
浏览文件 @
861fef52
...
@@ -17,14 +17,12 @@
...
@@ -17,14 +17,12 @@
import
numpy
as
np
import
numpy
as
np
import
paddle
import
paddle
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle
import
_C_ops
from
paddle.common_ops_import
import
VarDesc
,
Variable
from
paddle.common_ops_import
import
VarDesc
,
Variable
from
..fluid.data_feeder
import
check_dtype
,
check_variable_and_dtype
from
..fluid.data_feeder
import
check_dtype
,
check_variable_and_dtype
from
..fluid.framework
import
_in_legacy_dygraph
from
..framework
import
(
from
..framework
import
(
LayerHelper
,
LayerHelper
,
_non_static_mode
,
convert_np_dtype_to_dtype_
,
convert_np_dtype_to_dtype_
,
core
,
core
,
in_dygraph_mode
,
in_dygraph_mode
,
...
@@ -99,12 +97,7 @@ def argsort(x, axis=-1, descending=False, name=None):
...
@@ -99,12 +97,7 @@ def argsort(x, axis=-1, descending=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
_
,
ids
=
_C_ops
.
argsort
(
x
,
axis
,
descending
)
_
,
ids
=
_C_ops
.
argsort
(
x
,
axis
,
descending
)
return
ids
return
ids
else
:
if
_in_legacy_dygraph
():
_
,
ids
=
_legacy_C_ops
.
argsort
(
x
,
'axis'
,
axis
,
'descending'
,
descending
)
return
ids
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x'
,
'x'
,
...
@@ -187,20 +180,7 @@ def argmax(x, axis=None, keepdim=False, dtype="int64", name=None):
...
@@ -187,20 +180,7 @@ def argmax(x, axis=None, keepdim=False, dtype="int64", name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
argmax
(
x
,
axis
,
keepdim
,
flatten
,
var_dtype
)
return
_C_ops
.
argmax
(
x
,
axis
,
keepdim
,
flatten
,
var_dtype
)
if
_in_legacy_dygraph
():
else
:
out
=
_legacy_C_ops
.
arg_max
(
x
,
'axis'
,
axis
,
'dtype'
,
var_dtype
,
'keepdims'
,
keepdim
,
'flatten'
,
flatten
,
)
return
out
helper
=
LayerHelper
(
"argmax"
,
**
locals
())
helper
=
LayerHelper
(
"argmax"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -281,20 +261,7 @@ def argmin(x, axis=None, keepdim=False, dtype="int64", name=None):
...
@@ -281,20 +261,7 @@ def argmin(x, axis=None, keepdim=False, dtype="int64", name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
argmin
(
x
,
axis
,
keepdim
,
flatten
,
var_dtype
)
return
_C_ops
.
argmin
(
x
,
axis
,
keepdim
,
flatten
,
var_dtype
)
if
_in_legacy_dygraph
():
else
:
out
=
_legacy_C_ops
.
arg_min
(
x
,
'axis'
,
axis
,
'dtype'
,
var_dtype
,
'keepdims'
,
keepdim
,
'flatten'
,
flatten
,
)
return
out
helper
=
LayerHelper
(
"argmin"
,
**
locals
())
helper
=
LayerHelper
(
"argmin"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -354,10 +321,7 @@ def index_select(x, index, axis=0, name=None):
...
@@ -354,10 +321,7 @@ def index_select(x, index, axis=0, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
index_select
(
x
,
index
,
axis
)
return
_C_ops
.
index_select
(
x
,
index
,
axis
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
index_select
(
x
,
index
,
'dim'
,
axis
)
helper
=
LayerHelper
(
"index_select"
,
**
locals
())
helper
=
LayerHelper
(
"index_select"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -366,7 +330,10 @@ def index_select(x, index, axis=0, name=None):
...
@@ -366,7 +330,10 @@ def index_select(x, index, axis=0, name=None):
'paddle.tensor.search.index_select'
,
'paddle.tensor.search.index_select'
,
)
)
check_variable_and_dtype
(
check_variable_and_dtype
(
index
,
'index'
,
[
'int32'
,
'int64'
],
'paddle.tensor.search.index_select'
index
,
'index'
,
[
'int32'
,
'int64'
],
'paddle.tensor.search.index_select'
,
)
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
...
@@ -438,8 +405,6 @@ def nonzero(x, as_tuple=False):
...
@@ -438,8 +405,6 @@ def nonzero(x, as_tuple=False):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
outs
=
_C_ops
.
nonzero
(
x
)
outs
=
_C_ops
.
nonzero
(
x
)
elif
paddle
.
in_dynamic_mode
():
outs
=
_legacy_C_ops
.
where_index
(
x
)
else
:
else
:
helper
=
LayerHelper
(
"where_index"
,
**
locals
())
helper
=
LayerHelper
(
"where_index"
,
**
locals
())
...
@@ -522,12 +487,7 @@ def sort(x, axis=-1, descending=False, name=None):
...
@@ -522,12 +487,7 @@ def sort(x, axis=-1, descending=False, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
outs
,
_
=
_C_ops
.
argsort
(
x
,
axis
,
descending
)
outs
,
_
=
_C_ops
.
argsort
(
x
,
axis
,
descending
)
return
outs
return
outs
else
:
if
_in_legacy_dygraph
():
outs
,
_
=
_legacy_C_ops
.
argsort
(
x
,
'axis'
,
axis
,
'descending'
,
descending
)
return
outs
helper
=
LayerHelper
(
"sort"
,
**
locals
())
helper
=
LayerHelper
(
"sort"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
,
stop_gradient
=
False
dtype
=
x
.
dtype
,
stop_gradient
=
False
...
@@ -577,9 +537,7 @@ def mode(x, axis=-1, keepdim=False, name=None):
...
@@ -577,9 +537,7 @@ def mode(x, axis=-1, keepdim=False, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
mode
(
x
,
axis
,
keepdim
)
return
_C_ops
.
mode
(
x
,
axis
,
keepdim
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
mode
(
x
,
"axis"
,
axis
,
"keepdim"
,
keepdim
)
helper
=
LayerHelper
(
"mode"
,
**
locals
())
helper
=
LayerHelper
(
"mode"
,
**
locals
())
inputs
=
{
"X"
:
[
x
]}
inputs
=
{
"X"
:
[
x
]}
attrs
=
{}
attrs
=
{}
...
@@ -687,11 +645,6 @@ def where(condition, x=None, y=None, name=None):
...
@@ -687,11 +645,6 @@ def where(condition, x=None, y=None, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
where
(
broadcast_condition
,
broadcast_x
,
broadcast_y
)
return
_C_ops
.
where
(
broadcast_condition
,
broadcast_x
,
broadcast_y
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
where
(
broadcast_condition
,
broadcast_x
,
broadcast_y
)
else
:
else
:
helper
=
LayerHelper
(
"where"
,
**
locals
())
helper
=
LayerHelper
(
"where"
,
**
locals
())
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
...
@@ -784,9 +737,6 @@ def index_sample(x, index):
...
@@ -784,9 +737,6 @@ def index_sample(x, index):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
index_sample
(
x
,
index
)
return
_C_ops
.
index_sample
(
x
,
index
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
index_sample
(
x
,
index
)
else
:
else
:
helper
=
LayerHelper
(
"index_sample"
,
**
locals
())
helper
=
LayerHelper
(
"index_sample"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
...
@@ -843,9 +793,7 @@ def masked_select(x, mask, name=None):
...
@@ -843,9 +793,7 @@ def masked_select(x, mask, name=None):
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
masked_select
(
x
,
mask
)
return
_C_ops
.
masked_select
(
x
,
mask
)
if
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
masked_select
(
x
,
mask
)
helper
=
LayerHelper
(
"masked_select"
,
**
locals
())
helper
=
LayerHelper
(
"masked_select"
,
**
locals
())
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
...
@@ -858,7 +806,9 @@ def masked_select(x, mask, name=None):
...
@@ -858,7 +806,9 @@ def masked_select(x, mask, name=None):
)
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'masked_select'
,
inputs
=
{
'X'
:
x
,
'Mask'
:
mask
},
outputs
=
{
'Y'
:
out
}
type
=
'masked_select'
,
inputs
=
{
'X'
:
x
,
'Mask'
:
mask
},
outputs
=
{
'Y'
:
out
},
)
)
return
out
return
out
...
@@ -916,26 +866,7 @@ def topk(x, k, axis=None, largest=True, sorted=True, name=None):
...
@@ -916,26 +866,7 @@ def topk(x, k, axis=None, largest=True, sorted=True, name=None):
axis
=
-
1
axis
=
-
1
out
,
indices
=
_C_ops
.
topk
(
x
,
k
,
axis
,
largest
,
sorted
)
out
,
indices
=
_C_ops
.
topk
(
x
,
k
,
axis
,
largest
,
sorted
)
return
out
,
indices
return
out
,
indices
if
_non_static_mode
():
if
axis
is
None
:
out
,
indices
=
_legacy_C_ops
.
top_k_v2
(
x
,
'k'
,
int
(
k
),
'largest'
,
largest
,
'sorted'
,
sorted
)
else
:
else
:
out
,
indices
=
_legacy_C_ops
.
top_k_v2
(
x
,
'k'
,
int
(
k
),
'axis'
,
axis
,
'largest'
,
largest
,
'sorted'
,
sorted
,
)
return
out
,
indices
helper
=
LayerHelper
(
"top_k_v2"
,
**
locals
())
helper
=
LayerHelper
(
"top_k_v2"
,
**
locals
())
inputs
=
{
"X"
:
[
x
]}
inputs
=
{
"X"
:
[
x
]}
attrs
=
{}
attrs
=
{}
...
@@ -1065,12 +996,7 @@ def searchsorted(
...
@@ -1065,12 +996,7 @@ def searchsorted(
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
searchsorted
(
sorted_sequence
,
values
,
out_int32
,
right
)
return
_C_ops
.
searchsorted
(
sorted_sequence
,
values
,
out_int32
,
right
)
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
searchsorted
(
sorted_sequence
,
values
,
"out_int32"
,
out_int32
,
"right"
,
right
)
check_variable_and_dtype
(
check_variable_and_dtype
(
sorted_sequence
,
sorted_sequence
,
'SortedSequence'
,
'SortedSequence'
,
...
@@ -1135,16 +1061,10 @@ def kthvalue(x, k, axis=None, keepdim=False, name=None):
...
@@ -1135,16 +1061,10 @@ def kthvalue(x, k, axis=None, keepdim=False, name=None):
# [[0, 2],
# [[0, 2],
# [1, 2]]))
# [1, 2]]))
"""
"""
if
_non_static
_mode
():
if
in_dygraph
_mode
():
if
axis
is
not
None
:
if
axis
is
not
None
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
kthvalue
(
x
,
'k'
,
k
,
"axis"
,
axis
,
"keepdim"
,
keepdim
)
return
_C_ops
.
kthvalue
(
x
,
k
,
axis
,
keepdim
)
return
_C_ops
.
kthvalue
(
x
,
k
,
axis
,
keepdim
)
else
:
else
:
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
kthvalue
(
x
,
'k'
,
k
,
"keepdim"
,
keepdim
)
return
_C_ops
.
kthvalue
(
x
,
k
,
-
1
,
keepdim
)
return
_C_ops
.
kthvalue
(
x
,
k
,
-
1
,
keepdim
)
helper
=
LayerHelper
(
"kthvalue"
,
**
locals
())
helper
=
LayerHelper
(
"kthvalue"
,
**
locals
())
...
...
python/paddle/tensor/stat.py
浏览文件 @
861fef52
...
@@ -16,7 +16,7 @@
...
@@ -16,7 +16,7 @@
import
paddle
import
paddle
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle
import
_C_ops
,
_legacy_C_ops
from
paddle.fluid.framework
import
_in_legacy_dygraph
,
in_dygraph_mode
from
paddle.fluid.framework
import
in_dygraph_mode
from
..fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
..fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
..framework
import
LayerHelper
,
core
from
..framework
import
LayerHelper
,
core
...
@@ -81,13 +81,8 @@ def mean(x, axis=None, keepdim=False, name=None):
...
@@ -81,13 +81,8 @@ def mean(x, axis=None, keepdim=False, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
mean
(
x
,
axis
,
keepdim
)
return
_C_ops
.
mean
(
x
,
axis
,
keepdim
)
else
:
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
reduce_all
,
axis
=
_get_reduce_axis_with_tensor
(
axis
,
x
)
if
_in_legacy_dygraph
():
return
_legacy_C_ops
.
reduce_mean
(
x
,
'dim'
,
axis
,
'keep_dim'
,
keepdim
,
'reduce_all'
,
reduce_all
)
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
x
,
'x/input'
,
'x/input'
,
...
@@ -111,7 +106,10 @@ def mean(x, axis=None, keepdim=False, name=None):
...
@@ -111,7 +106,10 @@ def mean(x, axis=None, keepdim=False, name=None):
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
keepdim
,
'reduce_all'
:
reduce_all
}
attrs
=
{
'dim'
:
axis
,
'keep_dim'
:
keepdim
,
'reduce_all'
:
reduce_all
}
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
out
=
helper
.
create_variable_for_type_inference
(
x
.
dtype
)
helper
.
append_op
(
helper
.
append_op
(
type
=
'reduce_mean'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
type
=
'reduce_mean'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
,
)
)
return
out
return
out
...
@@ -146,7 +144,7 @@ def var(x, axis=None, unbiased=True, keepdim=False, name=None):
...
@@ -146,7 +144,7 @@ def var(x, axis=None, unbiased=True, keepdim=False, name=None):
out2 = paddle.var(x, axis=1)
out2 = paddle.var(x, axis=1)
# [1. 4.33333333]
# [1. 4.33333333]
"""
"""
if
not
paddle
.
in_dynamic
_mode
():
if
not
in_dygraph
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'var'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'var'
)
u
=
mean
(
x
,
axis
,
True
,
name
)
u
=
mean
(
x
,
axis
,
True
,
name
)
...
@@ -211,7 +209,7 @@ def std(x, axis=None, unbiased=True, keepdim=False, name=None):
...
@@ -211,7 +209,7 @@ def std(x, axis=None, unbiased=True, keepdim=False, name=None):
# [1. 2.081666]
# [1. 2.081666]
"""
"""
if
not
paddle
.
in_dynamic
_mode
():
if
not
in_dygraph
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'std'
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'std'
)
out
=
var
(
**
locals
())
out
=
var
(
**
locals
())
...
@@ -243,9 +241,7 @@ def numel(x, name=None):
...
@@ -243,9 +241,7 @@ def numel(x, name=None):
"""
"""
if
in_dygraph_mode
():
if
in_dygraph_mode
():
return
_C_ops
.
numel
(
x
)
return
_C_ops
.
numel
(
x
)
elif
_in_legacy_dygraph
():
else
:
return
_legacy_C_ops
.
size
(
x
)
if
not
isinstance
(
x
,
Variable
):
if
not
isinstance
(
x
,
Variable
):
raise
TypeError
(
"x must be a Tensor in numel"
)
raise
TypeError
(
"x must be a Tensor in numel"
)
helper
=
LayerHelper
(
'numel'
,
**
locals
())
helper
=
LayerHelper
(
'numel'
,
**
locals
())
...
@@ -331,14 +327,17 @@ def nanmedian(x, axis=None, keepdim=True, name=None):
...
@@ -331,14 +327,17 @@ def nanmedian(x, axis=None, keepdim=True, name=None):
if
len
(
axis
)
!=
len
(
set
(
axis
)):
if
len
(
axis
)
!=
len
(
set
(
axis
)):
raise
ValueError
(
"Axis has duplicated elements."
)
raise
ValueError
(
"Axis has duplicated elements."
)
if
_in_legacy_dygraph
():
if
in_dygraph_mode
():
median_index
,
out
=
_legacy_C_ops
.
nanmedian
(
median_index
,
out
=
_legacy_C_ops
.
nanmedian
(
x
,
'axis'
,
axis
,
'keepdim'
,
keepdim
x
,
'axis'
,
axis
,
'keepdim'
,
keepdim
)
)
return
out
return
out
else
:
check_variable_and_dtype
(
check_variable_and_dtype
(
x
,
'X'
,
[
'int32'
,
'int64'
,
'float16'
,
'float32'
,
'float64'
],
'nanmedian'
x
,
'X'
,
[
'int32'
,
'int64'
,
'float16'
,
'float32'
,
'float64'
],
'nanmedian'
,
)
)
helper
=
LayerHelper
(
'nanmedian'
,
**
locals
())
helper
=
LayerHelper
(
'nanmedian'
,
**
locals
())
...
@@ -534,7 +533,7 @@ def _compute_quantile(x, q, axis=None, keepdim=False, ignore_nan=False):
...
@@ -534,7 +533,7 @@ def _compute_quantile(x, q, axis=None, keepdim=False, ignore_nan=False):
for
q_num
in
q
:
for
q_num
in
q
:
if
q_num
<
0
or
q_num
>
1
:
if
q_num
<
0
or
q_num
>
1
:
raise
ValueError
(
"q should be in range [0, 1]"
)
raise
ValueError
(
"q should be in range [0, 1]"
)
if
paddle
.
in_dynamic
_mode
():
if
in_dygraph
_mode
():
q_num
=
paddle
.
to_tensor
(
q_num
,
dtype
=
'float64'
)
q_num
=
paddle
.
to_tensor
(
q_num
,
dtype
=
'float64'
)
if
ignore_nan
:
if
ignore_nan
:
indices
.
append
(
q_num
*
(
valid_counts
-
1
))
indices
.
append
(
q_num
*
(
valid_counts
-
1
))
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录