Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
Paddle
提交
a710738e
P
Paddle
项目概览
PaddlePaddle
/
Paddle
1 年多 前同步成功
通知
2302
Star
20931
Fork
5422
代码
文件
提交
分支
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看板
未验证
提交
a710738e
编写于
2月 22, 2022
作者:
Z
zhiboniu
提交者:
GitHub
2月 22, 2022
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
unset fluid in nn.others (#34935)
上级
1aa67778
变更
27
隐藏空白更改
内联
并排
Showing
27 changed file
with
258 addition
and
245 deletion
+258
-245
python/paddle/__init__.py
python/paddle/__init__.py
+27
-25
python/paddle/framework/__init__.py
python/paddle/framework/__init__.py
+9
-0
python/paddle/nn/__init__.py
python/paddle/nn/__init__.py
+0
-1
python/paddle/nn/functional/activation.py
python/paddle/nn/functional/activation.py
+28
-28
python/paddle/nn/functional/common.py
python/paddle/nn/functional/common.py
+27
-26
python/paddle/nn/functional/conv.py
python/paddle/nn/functional/conv.py
+21
-17
python/paddle/nn/functional/extension.py
python/paddle/nn/functional/extension.py
+4
-4
python/paddle/nn/functional/input.py
python/paddle/nn/functional/input.py
+3
-4
python/paddle/nn/functional/loss.py
python/paddle/nn/functional/loss.py
+17
-21
python/paddle/nn/functional/norm.py
python/paddle/nn/functional/norm.py
+8
-8
python/paddle/nn/functional/pooling.py
python/paddle/nn/functional/pooling.py
+24
-26
python/paddle/nn/functional/sparse_attention.py
python/paddle/nn/functional/sparse_attention.py
+3
-3
python/paddle/nn/functional/vision.py
python/paddle/nn/functional/vision.py
+7
-6
python/paddle/nn/initializer/assign.py
python/paddle/nn/initializer/assign.py
+4
-7
python/paddle/nn/initializer/dirac.py
python/paddle/nn/initializer/dirac.py
+4
-2
python/paddle/nn/initializer/orthogonal.py
python/paddle/nn/initializer/orthogonal.py
+2
-2
python/paddle/nn/layer/activation.py
python/paddle/nn/layer/activation.py
+0
-2
python/paddle/nn/layer/common.py
python/paddle/nn/layer/common.py
+2
-2
python/paddle/nn/layer/conv.py
python/paddle/nn/layer/conv.py
+7
-6
python/paddle/nn/layer/distance.py
python/paddle/nn/layer/distance.py
+2
-2
python/paddle/nn/layer/loss.py
python/paddle/nn/layer/loss.py
+3
-3
python/paddle/nn/layer/norm.py
python/paddle/nn/layer/norm.py
+3
-3
python/paddle/nn/layer/rnn.py
python/paddle/nn/layer/rnn.py
+11
-6
python/paddle/nn/quant/functional_layers.py
python/paddle/nn/quant/functional_layers.py
+2
-2
python/paddle/nn/quant/quant_layers.py
python/paddle/nn/quant/quant_layers.py
+19
-19
python/paddle/nn/utils/weight_norm_hook.py
python/paddle/nn/utils/weight_norm_hook.py
+20
-20
python/paddle/tensor/manipulation.py
python/paddle/tensor/manipulation.py
+1
-0
未找到文件。
python/paddle/__init__.py
浏览文件 @
a710738e
...
...
@@ -22,23 +22,32 @@ except ImportError:
)
from
.batch
import
batch
# noqa: F401
from
.f
luid
import
monkey_patch_variable
from
.f
luid.dygraph
import
monkey_patch_math_varbase
from
.f
ramework
import
monkey_patch_variable
from
.f
ramework
import
monkey_patch_math_varbase
monkey_patch_variable
()
monkey_patch_math_varbase
()
from
.framework
import
disable_signal_handler
# noqa: F401
from
.framework
import
get_flags
# noqa: F401
from
.framework
import
set_flags
# noqa: F401
from
.framework
import
disable_static
# noqa: F401
from
.framework
import
enable_static
# noqa: F401
from
.framework
import
in_dynamic_mode
# noqa: F401
from
.framework.dtype
import
dtype
as
dtype
# noqa: F401
from
paddle
.framework.dtype
import
uint8
# noqa: F401
from
paddle
.framework.dtype
import
int8
# noqa: F401
from
paddle
.framework.dtype
import
int16
# noqa: F401
from
paddle
.framework.dtype
import
int32
# noqa: F401
from
paddle
.framework.dtype
import
int64
# noqa: F401
from
paddle
.framework.dtype
import
float16
# noqa: F401
from
paddle
.framework.dtype
import
float32
# noqa: F401
from
paddle
.framework.dtype
import
float64
# noqa: F401
from
paddle
.framework.dtype
import
bfloat16
# noqa: F401
from
paddle
.framework.dtype
import
bool
# noqa: F401
from
paddle
.framework.dtype
import
complex64
# noqa: F401
from
paddle
.framework.dtype
import
complex128
# noqa: F401
from
.framework.dtype
import
uint8
# noqa: F401
from
.framework.dtype
import
int8
# noqa: F401
from
.framework.dtype
import
int16
# noqa: F401
from
.framework.dtype
import
int32
# noqa: F401
from
.framework.dtype
import
int64
# noqa: F401
from
.framework.dtype
import
float16
# noqa: F401
from
.framework.dtype
import
float32
# noqa: F401
from
.framework.dtype
import
float64
# noqa: F401
from
.framework.dtype
import
bfloat16
# noqa: F401
from
.framework.dtype
import
bool
# noqa: F401
from
.framework.dtype
import
complex64
# noqa: F401
from
.framework.dtype
import
complex128
# noqa: F401
from
.framework
import
VarBase
as
Tensor
# noqa: F401
Tensor
.
__qualname__
=
'Tensor'
# noqa: F401
import
paddle.compat
# noqa: F401
...
...
@@ -142,6 +151,7 @@ from .tensor.manipulation import scatter_nd_add # noqa: F401
from
.tensor.manipulation
import
scatter_nd
# noqa: F401
from
.tensor.manipulation
import
shard_index
# noqa: F401
from
.tensor.manipulation
import
slice
# noqa: F401
from
.tensor.manipulation
import
crop
# noqa: F401
from
.tensor.manipulation
import
split
# noqa: F401
from
.tensor.manipulation
import
squeeze
# noqa: F401
from
.tensor.manipulation
import
squeeze_
# noqa: F401
...
...
@@ -316,23 +326,15 @@ from .tensor.stat import quantile # noqa: F401
from
.device
import
get_cudnn_version
# noqa: F401
from
.device
import
set_device
# noqa: F401
from
.device
import
get_device
# noqa: F401
from
.fluid.framework
import
is_compiled_with_cinn
# noqa: F401
from
.fluid.framework
import
is_compiled_with_cuda
# noqa: F401
from
.fluid.framework
import
is_compiled_with_rocm
# noqa: F401
from
.fluid.framework
import
disable_signal_handler
# noqa: F401
from
.fluid.framework
import
get_flags
# noqa: F401
from
.fluid.framework
import
set_flags
# noqa: F401
from
.device
import
is_compiled_with_xpu
# noqa: F401
from
.device
import
is_compiled_with_npu
# noqa: F401
from
.device
import
is_compiled_with_ipu
# noqa: F401
from
.device
import
is_compiled_with_mlu
# noqa: F401
from
.device
import
is_compiled_with_cinn
# noqa: F401
from
.device
import
is_compiled_with_cuda
# noqa: F401
from
.device
import
is_compiled_with_rocm
# noqa: F401
from
.device
import
XPUPlace
# noqa: F401
from
.fluid.dygraph.base
import
enable_dygraph
as
disable_static
# noqa: F401
from
.fluid.dygraph.base
import
disable_dygraph
as
enable_static
# noqa: F401
from
.fluid.framework
import
in_dygraph_mode
as
in_dynamic_mode
# noqa: F401
from
.fluid.layers
import
crop_tensor
as
crop
# noqa: F401
# high-level api
from
.hapi
import
Model
# noqa: F401
from
.
import
callbacks
# noqa: F401
...
...
python/paddle/framework/__init__.py
浏览文件 @
a710738e
...
...
@@ -39,4 +39,13 @@ from .io import save # noqa: F401
from
.io
import
load
# noqa: F401
from
..fluid.dygraph.parallel
import
DataParallel
# noqa: F401
from
..fluid
import
monkey_patch_variable
from
..fluid.dygraph
import
monkey_patch_math_varbase
from
..fluid.framework
import
disable_signal_handler
# noqa: F401
from
..fluid.framework
import
get_flags
# noqa: F401
from
..fluid.framework
import
set_flags
# noqa: F401
from
..fluid.dygraph.base
import
enable_dygraph
as
disable_static
# noqa: F401
from
..fluid.dygraph.base
import
disable_dygraph
as
enable_static
# noqa: F401
from
..fluid.framework
import
in_dygraph_mode
as
in_dynamic_mode
# noqa: F401
__all__
=
[]
python/paddle/nn/__init__.py
浏览文件 @
a710738e
...
...
@@ -14,7 +14,6 @@
# TODO: import all neural network related api under this directory,
# including layers, linear, conv, rnn etc.
from
..fluid.dygraph.layers
import
Layer
# noqa: F401
from
..fluid.dygraph.container
import
LayerList
# noqa: F401
from
..fluid.dygraph.container
import
ParameterList
# noqa: F401
...
...
python/paddle/nn/functional/activation.py
浏览文件 @
a710738e
...
...
@@ -22,11 +22,11 @@ from ...tensor.math import multiply
import
warnings
from
...fluid.layer_helper
import
LayerHelper
from
...fluid.framework
import
in_dygraph_mode
,
convert_np_dtype_to_dtype_
from
...fluid
import
core
from
...fluid.framework
import
convert_np_dtype_to_dtype_
from
...fluid.data_feeder
import
check_variable_and_dtype
,
check_dtype
import
paddle
from
paddle
import
_C_ops
from
paddle
import
_C_ops
,
in_dynamic_mode
from
paddle.framework
import
core
__all__
=
[]
...
...
@@ -61,7 +61,7 @@ def celu(x, alpha=1.0, name=None):
if
alpha
==
0
:
raise
ZeroDivisionError
(
"alpha cannot be 0 for celu"
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
celu
(
x
,
'alpha'
,
alpha
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'celu'
)
...
...
@@ -110,7 +110,7 @@ def elu(x, alpha=1.0, name=None):
# [ 1. 15.6 ]]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
elu
(
x
,
'alpha'
,
alpha
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'elu'
)
...
...
@@ -174,7 +174,7 @@ def gelu(x, approximate=False, name=None):
# [ 0.84119201, 1.39957154]]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
gelu
(
x
,
'approximate'
,
approximate
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'gelu'
)
...
...
@@ -222,7 +222,7 @@ def hardshrink(x, threshold=0.5, name=None):
out = F.hardshrink(x) # [-1., 0., 2.5]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
hard_shrink
(
x
,
'threshold'
,
threshold
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -273,7 +273,7 @@ def hardtanh(x, min=-1.0, max=1.0, name=None):
out = F.hardtanh(x) # [-1., 0.3, 1.]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
brelu
(
x
,
't_min'
,
min
,
't_max'
,
max
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -328,7 +328,7 @@ def hardsigmoid(x, slope=0.1666667, offset=0.5, name=None):
out = F.hardsigmoid(x) # [0., 1., 0.666667]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
hard_sigmoid
(
x
,
'slope'
,
slope
,
'offset'
,
offset
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -382,7 +382,7 @@ def hardswish(x, name=None):
out = F.hardswish(x) # [0., 5., 0.666667]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
hard_swish
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -427,7 +427,7 @@ def leaky_relu(x, negative_slope=0.01, name=None):
out = F.leaky_relu(x) # [-0.02, 0., 1.]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
leaky_relu
(
x
,
'alpha'
,
negative_slope
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -518,7 +518,7 @@ def prelu(x, weight, data_format="NCHW", name=None):
1
],
"The weight size should be equal to x input channel in prelu() when weight shape is not [1]."
mode
=
'channel'
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
prelu
(
x
,
weight
,
'mode'
,
mode
,
'data_format'
,
data_format
)
helper
=
LayerHelper
(
'prelu'
,
**
locals
())
...
...
@@ -560,7 +560,7 @@ def relu(x, name=None):
out = F.relu(x) # [0., 0., 1.]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
relu
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'relu'
)
...
...
@@ -605,7 +605,7 @@ def log_sigmoid(x, name=None):
out = F.log_sigmoid(x) # [-0.313262 -0.126928 -0.0485874 -0.0181499]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
logsigmoid
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -672,7 +672,7 @@ def maxout(x, groups, axis=1, name=None):
# [0.7142536 0.88725346 0.61093384 0.38833922]]]]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
maxout
(
x
,
'groups'
,
groups
,
'axis'
,
axis
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'maxout'
)
...
...
@@ -721,7 +721,7 @@ def relu6(x, name=None):
out = F.relu6(x) # [0, 0.3, 6]
"""
threshold
=
6.0
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
relu6
(
x
,
'threshold'
,
threshold
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'relu6'
)
...
...
@@ -780,7 +780,7 @@ def selu(x,
raise
ValueError
(
"The alpha must be no less than zero. Received: {}."
.
format
(
alpha
))
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
selu
(
x
,
'scale'
,
scale
,
'alpha'
,
alpha
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'selu'
)
...
...
@@ -821,7 +821,7 @@ def silu(x, name=None):
out = F.silu(x) # [ 0.731059, 1.761594, 2.857722, 3.928055 ]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
silu
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'silu'
)
...
...
@@ -951,7 +951,7 @@ def softmax(x, axis=-1, dtype=None, name=None):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
use_cudnn
=
True
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
outs_cast
=
x
if
dtype
is
None
\
else
_C_ops
.
cast
(
x
,
'in_dtype'
,
x
.
dtype
,
'out_dtype'
,
dtype
)
return
_C_ops
.
softmax
(
outs_cast
,
'axis'
,
axis
,
'use_cudnn'
,
use_cudnn
)
...
...
@@ -1026,7 +1026,7 @@ def softplus(x, beta=1, threshold=20, name=None):
x = paddle.to_tensor(np.array([-0.4, -0.2, 0.1, 0.3]))
out = F.softplus(x) # [0.513015, 0.598139, 0.744397, 0.854355]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
softplus
(
x
,
'beta'
,
beta
,
'threshold'
,
threshold
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -1081,7 +1081,7 @@ def softshrink(x, threshold=0.5, name=None):
"The threshold must be no less than zero. Received: {}."
.
format
(
threshold
))
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
softshrink
(
x
,
'lambda'
,
threshold
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -1122,7 +1122,7 @@ def softsign(x, name=None):
x = paddle.to_tensor(np.array([-0.4, -0.2, 0.1, 0.3]))
out = F.softsign(x) # [-0.285714, -0.166667, 0.0909091, 0.230769]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
softsign
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -1160,7 +1160,7 @@ def swish(x, name=None):
out = F.swish(x) # [-0.238406, 0., 0.731059]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
swish
(
x
,
'beta'
,
1.0
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'swish'
)
...
...
@@ -1204,7 +1204,7 @@ def mish(x, name=None):
x = paddle.to_tensor([-5., 0., 5.])
out = F.mish(x) # [-0.03357624, 0., 4.99955208]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
mish
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'mish'
)
...
...
@@ -1240,7 +1240,7 @@ def tanhshrink(x, name=None):
x = paddle.to_tensor(np.array([-0.4, -0.2, 0.1, 0.3]))
out = F.tanhshrink(x) # [-0.020051, -0.00262468, 0.000332005, 0.00868739]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
tanh_shrink
(
x
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -1286,7 +1286,7 @@ def thresholded_relu(x, threshold=1.0, name=None):
out = F.thresholded_relu(x) # [2., 0., 0.]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
thresholded_relu
(
x
,
'threshold'
,
threshold
)
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
...
...
@@ -1360,7 +1360,7 @@ def log_softmax(x, axis=-1, dtype=None, name=None):
if
(
dtype
is
not
None
)
and
(
not
isinstance
(
dtype
,
core
.
VarDesc
.
VarType
)):
dtype
=
convert_np_dtype_to_dtype_
(
dtype
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
dtype
is
not
None
:
x
=
_C_ops
.
cast
(
x
,
'in_dtype'
,
x
.
dtype
,
'out_dtype'
,
dtype
)
return
_C_ops
.
log_softmax
(
x
,
'axis'
,
axis
)
...
...
@@ -1498,7 +1498,7 @@ def gumbel_softmax(x, temperature=1.0, hard=False, axis=-1, name=None):
# [0.00000000, 0.00000000, 0.00000000, 0.00001258, 0.99998736, 0.00000000]]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
gumbel_softmax
(
x
,
'temperature'
,
temperature
,
'hard'
,
hard
,
'axis'
,
axis
)
...
...
python/paddle/nn/functional/common.py
浏览文件 @
a710738e
...
...
@@ -14,13 +14,11 @@
import
warnings
import
paddle
from
...fluid.framework
import
in_dygraph_mode
,
default_main_program
from
paddle.fluid.layer_helper
import
LayerHelper
from
paddle.fluid.layers.tensor
import
fill_constant
from
...tensor
import
concat
from
...tensor.creation
import
zeros
from
paddle.static
import
Variable
from
...fluid.layers
import
core
from
...fluid
import
dygraph_utils
# TODO: define the common functions to build a neural network
from
...fluid.layers
import
unfold
# noqa: F401
...
...
@@ -30,13 +28,17 @@ from ...tensor import clip
from
...tensor
import
sum
from
...tensor
import
sqrt
from
...fluid.data_feeder
import
check_variable_and_dtype
,
check_dtype
from
...fluid.framework
import
in_dygraph_mode
,
_varbase_creator
from
...fluid.framework
import
_varbase_creator
from
...fluid.framework
import
in_dygraph_mode
from
...fluid
import
core
,
dygraph_utils
from
...fluid
import
core
,
layers
from
...fluid
import
dygraph_utils
from
...fluid
import
layers
from
...fluid.data_feeder
import
check_variable_and_dtype
from
paddle
import
_C_ops
from
paddle.framework
import
in_dynamic_mode
from
paddle.tensor.creation
import
full
from
paddle.framework
import
core
from
paddle.static
import
default_main_program
__all__
=
[]
...
...
@@ -353,11 +355,11 @@ def interpolate(x,
if
out_shape
is
not
None
and
scale
is
not
None
:
raise
ValueError
(
"Only one of size or scale_factor should be defined."
)
if
out_shape
is
not
None
:
if
isinstance
(
out_shape
,
Variable
)
and
not
in_dy
graph
_mode
():
if
isinstance
(
out_shape
,
Variable
)
and
not
in_dy
namic
_mode
():
out_shape
.
stop_gradient
=
True
inputs
[
'OutSize'
]
=
out_shape
else
:
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
isinstance
(
out_shape
,
Variable
):
out_shape
=
list
(
out_shape
.
numpy
())
for
i
,
dim
in
enumerate
(
out_shape
):
...
...
@@ -428,7 +430,7 @@ def interpolate(x,
attrs
[
'out_w'
]
=
out_shape
[
2
]
else
:
if
in_dy
graph
_mode
()
and
isinstance
(
scale
,
Variable
):
if
in_dy
namic
_mode
()
and
isinstance
(
scale
,
Variable
):
scale
=
list
(
scale
.
numpy
())
if
isinstance
(
scale
,
Variable
):
scale
.
stop_gradient
=
True
...
...
@@ -454,7 +456,7 @@ def interpolate(x,
"Attr(scale)'s type should be float, int, list, tuple, or Tensor."
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attr_list
=
[]
for
k
,
v
in
attrs
.
items
():
attr_list
.
append
(
k
)
...
...
@@ -719,7 +721,7 @@ def bilinear(x1, x2, weight, bias=None, name=None):
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
bilinear_tensor_product
(
x1
,
x2
,
weight
,
bias
)
check_variable_and_dtype
(
x1
,
'x1'
,
[
'float32'
,
'float64'
],
'bilinear'
)
...
...
@@ -891,7 +893,7 @@ def dropout(x,
seed
=
None
mode
=
'downgrade_in_infer'
if
mode
==
'downscale_in_infer'
else
mode
#semantic transfer
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
default_main_program
().
random_seed
!=
0
:
seed
=
default_main_program
().
random_seed
out
,
mask
=
_C_ops
.
dropout
(
...
...
@@ -930,7 +932,7 @@ def dropout(x,
attrs
=
attrs
)
return
out
else
:
#sometimes called dropout_nd #TODO: optimize with c++
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'dropout'
)
dtype
=
x
.
dtype
keep_prob
=
1
-
p
...
...
@@ -943,7 +945,7 @@ def dropout(x,
#get mask shape
input_shape
=
x
.
shape
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
input_shape_tensor
=
paddle
.
shape
(
x
)
drop_axes
=
[
axis
]
if
isinstance
(
axis
,
int
)
else
list
(
axis
)
if
min
(
drop_axes
)
<
0
or
max
(
drop_axes
)
>
len
(
input_shape
)
-
1
:
...
...
@@ -954,7 +956,7 @@ def dropout(x,
"length of axis should not be greater than dimensions of x:{}, but get length of axis: {}"
.
format
(
len
(
input_shape
),
len
(
drop_axes
)))
mask_shape
=
[
1
]
*
len
(
input_shape
)
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
for
i
in
drop_axes
:
mask_shape
[
i
]
=
input_shape_tensor
[
i
]
else
:
...
...
@@ -964,7 +966,7 @@ def dropout(x,
#get mask
random_tensor
=
paddle
.
uniform
(
mask_shape
,
dtype
=
'float32'
,
min
=
0.
,
max
=
1.0
)
p
=
layers
.
fill_constant
(
shape
=
[
1
],
dtype
=
'float32'
,
value
=
p
)
p
=
full
(
shape
=
[
1
],
fill_value
=
p
,
dtype
=
'float32'
)
keep_mask
=
paddle
.
greater_equal
(
random_tensor
,
p
)
scale_input
=
paddle
.
cast
(
scale_input
,
dtype
)
...
...
@@ -1122,7 +1124,7 @@ def alpha_dropout(x, p=0.5, training=True, name=None):
if
p
<
0
or
p
>
1
:
raise
ValueError
(
"p argument should between 0 and 1"
)
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'alpha_dropout'
)
...
...
@@ -1142,16 +1144,15 @@ def alpha_dropout(x, p=0.5, training=True, name=None):
#get mask
random_tensor
=
paddle
.
uniform
(
input_shape
,
dtype
=
'float32'
,
min
=
0.
,
max
=
1.0
)
p
=
layers
.
fill_constant
(
shape
=
[
1
],
dtype
=
'float32'
,
value
=
p
)
p
=
full
(
shape
=
[
1
],
fill_value
=
p
,
dtype
=
'float32'
)
keep_mask
=
paddle
.
greater_equal
(
random_tensor
,
p
)
keep_mask
=
paddle
.
cast
(
keep_mask
,
dtype
)
drop_mask
=
paddle
.
subtract
(
layers
.
fill_constant
(
shape
=
input_shape
,
dtype
=
dtype
,
value
=
1.
),
keep_mask
)
full
(
shape
=
input_shape
,
fill_value
=
1.
,
dtype
=
dtype
),
keep_mask
)
#apply mask
b
=
layers
.
fill_constant
(
shape
=
[
1
],
dtype
=
dtype
,
value
=
b
)
b
=
full
(
shape
=
[
1
],
fill_value
=
b
,
dtype
=
dtype
)
y
=
paddle
.
add
(
paddle
.
multiply
(
x
,
keep_mask
),
paddle
.
scale
(
drop_mask
,
scale
=
alpha_p
))
...
...
@@ -1347,7 +1348,7 @@ def pad(x, pad, mode='constant', value=0, data_format="NCHW", name=None):
unsqueezed_dim
=
[
1
]
x
=
unsqueeze
(
x
,
axis
=
unsqueezed_dim
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
isinstance
(
pad
,
Variable
):
pad
=
pad
.
numpy
()
out
=
_C_ops
.
pad3d
(
x
,
"paddings"
,
pad
,
"mode"
,
mode
,
"value"
,
value
,
...
...
@@ -1519,7 +1520,7 @@ def linear(x, weight, bias=None, name=None):
# [0.9440598 0.9440598 0.9440598 0.9440598 ]
# [2.1077576 2.1077576 2.1077576 2.1077576 ]]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
pre_bias
=
_C_ops
.
matmul_v2
(
x
,
weight
,
'trans_x'
,
False
,
'trans_y'
,
False
)
...
...
@@ -1614,7 +1615,7 @@ def label_smooth(label, prior_dist=None, epsilon=0.1, name=None):
if
epsilon
>
1.
or
epsilon
<
0.
:
raise
ValueError
(
"The value of epsilon must be between 0 and 1."
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
label_smooth
(
label
,
prior_dist
,
'epsilon'
,
float
(
epsilon
))
check_variable_and_dtype
(
label
,
'label'
,
[
'float32'
,
'float64'
],
...
...
@@ -1765,7 +1766,7 @@ def class_center_sample(label, num_classes, num_samples, group=None):
if
(
seed
is
None
or
seed
==
0
)
and
default_main_program
().
random_seed
!=
0
:
seed
=
default_main_program
().
random_seed
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
remapped_label
,
sampled_class_center
=
_C_ops
.
class_center_sample
(
label
,
'num_classes'
,
num_classes
,
'num_samples'
,
num_samples
,
'ring_id'
,
ring_id
,
'nranks'
,
nranks
,
'rank'
,
rank
,
'fix_seed'
,
...
...
python/paddle/nn/functional/conv.py
浏览文件 @
a710738e
...
...
@@ -16,9 +16,8 @@ from paddle.fluid.framework import _global_flags
import
numpy
as
np
from
...device
import
get_cudnn_version
from
...fluid.framework
import
in_dygraph_mode
from
...static
import
Variable
from
...fluid
import
core
,
dygraph_utils
,
get_flag
s
from
...fluid
import
dygraph_util
s
from
...fluid.layers.utils
import
convert_to_list
,
_is_symmetric_padding
from
...fluid.data_feeder
import
check_variable_and_dtype
from
...framework
import
ParamAttr
...
...
@@ -27,6 +26,11 @@ from paddle import _C_ops
from
...tensor.manipulation
import
unsqueeze
,
squeeze
from
...tensor.math
import
add
from
...fluid.layers
import
nn
from
paddle.device
import
is_compiled_with_cuda
from
paddle.device
import
is_compiled_with_rocm
from
paddle.device
import
is_compiled_with_npu
from
paddle
import
in_dynamic_mode
from
paddle
import
get_flags
__all__
=
[]
...
...
@@ -114,7 +118,7 @@ def _conv_nd(x,
name
=
None
):
# Due to the poor performance of NHWC, we transpose the input to NCHW.
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'strides'
,
stride
,
'paddings'
,
padding
,
'dilations'
,
dilation
,
'groups'
,
groups
,
'use_cudnn'
,
use_cudnn
,
'use_mkldnn'
,
use_mkldnn
,
'fuse_relu_before_depthwise_conv'
,
False
,
...
...
@@ -342,13 +346,13 @@ def conv1d(x,
l_type
=
"conv2d"
# When "groups==num_channels and num_filters% num_channels == 0" using depthwise_conv2d has better performance
if
(
core
.
is_compiled_with_cuda
()
and
num_channels
==
groups
and
if
(
is_compiled_with_cuda
()
and
num_channels
==
groups
and
num_channels
!=
1
and
num_filters
%
num_channels
==
0
):
l_type
=
'depthwise_conv2d'
use_cudnn
=
False
# NPU only supports depthwise_conv2d when "input_channel = output_channel = groups"
if
core
.
is_compiled_with_npu
():
if
is_compiled_with_npu
():
if
(
num_channels
==
groups
and
num_channels
==
num_filters
):
l_type
=
'depthwise_conv2d'
else
:
...
...
@@ -357,7 +361,7 @@ def conv1d(x,
squeeze_aixs
=
-
3
if
channel_last
else
-
2
x
=
unsqueeze
(
x
,
axis
=
[
squeeze_aixs
])
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'strides'
,
stride
,
'paddings'
,
padding
,
'dilations'
,
dilation
,
'groups'
,
groups
,
'use_cudnn'
,
use_cudnn
,
'use_mkldnn'
,
False
,
'fuse_relu_before_depthwise_conv'
,
False
,
"padding_algorithm"
,
...
...
@@ -553,7 +557,7 @@ def conv2d(x,
cudnn_version
=
get_cudnn_version
()
use_cudnn
=
True
if
(
core
.
is_compiled_with_cuda
()
and
use_cudnn
=
True
if
(
is_compiled_with_cuda
()
and
cudnn_version
is
not
None
)
else
False
use_mkldnn
=
_global_flags
()[
"FLAGS_use_mkldnn"
]
...
...
@@ -567,20 +571,20 @@ def conv2d(x,
if
(
num_channels
==
groups
and
num_channels
!=
1
and
num_filters
%
num_channels
==
0
):
l_type
=
'depthwise_conv2d'
if
core
.
is_compiled_with_rocm
():
if
is_compiled_with_rocm
():
use_cudnn
=
True
else
:
use_cudnn
=
False
# NPU only supports depthwise_conv2d when "input_channel = output_channel = groups"
if
core
.
is_compiled_with_npu
():
if
is_compiled_with_npu
():
if
(
num_channels
==
groups
and
num_channels
==
num_filters
):
l_type
=
'depthwise_conv2d'
else
:
l_type
=
'conv2d'
if
(
core
.
is_compiled_with_cuda
()
and
get_flags
(
"FLAGS_conv2d_disable_cudnn"
)
[
"FLAGS_conv2d_disable_cudnn"
]):
if
(
is_compiled_with_cuda
()
and
get_flags
(
"FLAGS_conv2d_disable_cudnn"
)[
"FLAGS_conv2d_disable_cudnn"
]):
use_cudnn
=
False
return
_conv_nd
(
x
,
weight
,
bias
,
stride
,
padding
,
padding_algorithm
,
...
...
@@ -815,7 +819,7 @@ def conv1d_transpose(x,
x
=
unsqueeze
(
x
,
axis
=
[
squeeze_axis
])
weight
=
unsqueeze
(
weight
,
axis
=
[
-
1
])
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'output_padding'
,
output_padding
,
'output_size'
,
output_size
,
'strides'
,
stride
,
'paddings'
,
padding
,
'padding_algorithm'
,
padding_algorithm
,
'dilations'
,
dilation
,
'groups'
,
groups
,
...
...
@@ -1026,7 +1030,7 @@ def conv2d_transpose(x,
cudnn_version
=
get_cudnn_version
()
use_cudnn
=
True
if
(
core
.
is_compiled_with_cuda
()
and
use_cudnn
=
True
if
(
is_compiled_with_cuda
()
and
cudnn_version
is
not
None
)
else
False
# update attrs
...
...
@@ -1057,7 +1061,7 @@ def conv2d_transpose(x,
op_type
=
'depthwise_conv2d_transpose'
use_cudnn
=
False
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'output_padding'
,
output_padding
,
'output_size'
,
output_size
,
'strides'
,
stride
,
'paddings'
,
padding
,
'padding_algorithm'
,
padding_algorithm
,
'dilations'
,
dilation
,
'groups'
,
groups
,
...
...
@@ -1242,7 +1246,7 @@ def conv3d(x,
groups
))
cudnn_version
=
get_cudnn_version
()
use_cudnn
=
True
if
(
core
.
is_compiled_with_cuda
()
and
use_cudnn
=
True
if
(
is_compiled_with_cuda
()
and
cudnn_version
is
not
None
)
else
False
padding
,
padding_algorithm
=
_update_padding_nd
(
padding
,
channel_last
,
3
)
...
...
@@ -1458,13 +1462,13 @@ def conv3d_transpose(x,
cudnn_version
=
get_cudnn_version
()
#TODO(LielinJiang): whether to use cudnn according to the version of cudnn
use_cudnn
=
True
if
(
core
.
is_compiled_with_cuda
()
and
use_cudnn
=
True
if
(
is_compiled_with_cuda
()
and
cudnn_version
is
not
None
)
else
False
op_type
=
'conv3d_transpose'
data_format_
=
"NHWC"
if
channel_last
else
"NCHW"
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'output_padding'
,
output_padding
,
'output_size'
,
output_size
,
'paddings'
,
padding
,
"padding_algorithm"
,
padding_algorithm
,
'strides'
,
stride
,
'dilations'
,
dilation
,
'groups'
,
groups
,
...
...
python/paddle/nn/functional/extension.py
浏览文件 @
a710738e
...
...
@@ -17,12 +17,12 @@
import
numpy
as
np
from
...fluid.data_feeder
import
check_dtype
from
...fluid.layer_helper
import
LayerHelper
from
...fluid.framework
import
in_dygraph_mode
from
...static
import
Variable
from
...tensor.creation
import
assign
from
...fluid
import
core
,
dygraph_utils
from
...fluid
import
dygraph_utils
from
...fluid.layers.layer_function_generator
import
templatedoc
from
...fluid.layers.sequence_lod
import
sequence_mask
from
...fluid.layers.sequence_lod
import
sequence_mask
#noqa: F401
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -125,7 +125,7 @@ def diag_embed(input, offset=0, dim1=-2, dim2=-1):
"dim1 and dim2 cannot be the same dimension."
\
"But received dim1 = %d, dim2 = %d
\n
"
%
(
dim1
,
dim2
)
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
__check_input
(
input
,
offset
,
dim1
,
dim2
)
helper
=
LayerHelper
(
"diag_embed"
,
**
locals
())
...
...
python/paddle/nn/functional/input.py
浏览文件 @
a710738e
...
...
@@ -14,12 +14,11 @@
from
__future__
import
print_function
import
warnings
from
...fluid.framework
import
in_dygraph_mode
from
...static
import
Variable
from
...fluid.layer_helper
import
LayerHelper
from
...fluid.layers
import
core
from
...fluid.data_feeder
import
check_variable_and_dtype
,
check_dtype
from
paddle
import
_C_ops
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -87,7 +86,7 @@ def one_hot(x, num_classes, name=None):
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
one_hot_v2
(
x
,
'depth'
,
num_classes
,
'allow_out_of_range'
,
False
)
else
:
...
...
@@ -196,7 +195,7 @@ def embedding(x, weight, padding_idx=None, sparse=False, name=None):
raise
ValueError
(
"padding_idx must be within [-{}, {})"
.
format
(
weight
.
shape
[
0
],
weight
.
shape
[
0
]))
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
lookup_table_v2
(
weight
,
x
,
'is_sparse'
,
sparse
,
'is_distributed'
,
False
,
'remote_prefetch'
,
False
,
'padding_idx'
,
padding_idx
)
...
...
python/paddle/nn/functional/loss.py
浏览文件 @
a710738e
...
...
@@ -14,15 +14,12 @@
# limitations under the License.
import
paddle
from
...fluid.layer_helper
import
LayerHelper
from
...fluid.data_feeder
import
check_variable_and_dtype
import
paddle.fluid
as
fluid
# TODO: define loss functions of neural network
import
numpy
as
np
import
paddle
import
paddle.fluid
as
fluid
from
...fluid.framework
import
core
,
in_dygraph_mode
from
...fluid.layers.nn
import
_elementwise_op_in_dygraph
from
...fluid.layers
import
dice_loss
# noqa: F401
from
...fluid.layers
import
log_loss
# noqa: F401
...
...
@@ -34,11 +31,12 @@ from ...fluid.layers import square_error_cost # noqa: F401
from
...fluid.layers
import
edit_distance
# noqa: F401
from
...fluid.layers
import
huber_loss
from
...fluid.layer_helper
import
LayerHelper
from
...fluid.framework
import
in_dygraph_mode
from
...fluid.framework
import
_varbase_creator
from
...static
import
Variable
from
paddle.utils
import
deprecated
from
paddle
import
_C_ops
from
paddle
import
in_dynamic_mode
from
paddle.framework
import
core
__all__
=
[]
...
...
@@ -115,7 +113,7 @@ def binary_cross_entropy(input, label, weight=None, reduction='mean',
"'mean' or 'none', but received %s, which is not allowed."
%
reduction
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
out
=
_C_ops
.
bce_loss
(
input
,
label
)
if
weight
is
not
None
:
out
=
_C_ops
.
elementwise_mul
(
out
,
weight
,
'axis'
,
-
1
)
...
...
@@ -249,7 +247,7 @@ def binary_cross_entropy_with_logits(logit,
"should be 'sum', 'mean' or 'none', but received %s, which is not allowed."
%
reduction
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
one
=
_varbase_creator
(
dtype
=
logit
.
dtype
)
_C_ops
.
fill_constant
(
one
,
'value'
,
float
(
1.0
),
'force_cpu'
,
False
,
'dtype'
,
one
.
dtype
,
...
...
@@ -284,8 +282,7 @@ def binary_cross_entropy_with_logits(logit,
out
=
paddle
.
fluid
.
layers
.
sigmoid_cross_entropy_with_logits
(
logit
,
label
,
name
=
sigmoid_name
)
one
=
paddle
.
fluid
.
layers
.
fill_constant
(
shape
=
[
1
],
value
=
1.0
,
dtype
=
logit
.
dtype
)
one
=
paddle
.
full
(
shape
=
[
1
],
fill_value
=
1.0
,
dtype
=
logit
.
dtype
)
if
pos_weight
is
not
None
:
fluid
.
data_feeder
.
check_variable_and_dtype
(
pos_weight
,
'pos_weight'
,
[
'float32'
,
'float64'
],
...
...
@@ -392,7 +389,7 @@ def hsigmoid_loss(input,
# [2.2407534]]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
out
,
_
,
_
=
_C_ops
.
hierarchical_sigmoid
(
input
,
weight
,
label
,
path_table
,
path_code
,
bias
,
'num_classes'
,
num_classes
,
'is_sparse'
,
is_sparse
,
'remote_prefetch'
,
is_sparse
)
...
...
@@ -569,7 +566,7 @@ def margin_ranking_loss(input,
raise
ValueError
(
"The value of 'reduction' in MarginRankingLoss should be 'sum', 'mean' or 'none', but "
"received %s, which is not allowed."
%
reduction
)
if
fluid
.
framework
.
in_dygraph
_mode
():
if
in_dynamic
_mode
():
out
=
_C_ops
.
elementwise_sub
(
other
,
input
)
out
=
_C_ops
.
elementwise_mul
(
out
,
label
)
if
margin
!=
0.0
:
...
...
@@ -595,8 +592,7 @@ def margin_ranking_loss(input,
if
margin
!=
0.0
:
margin_var
=
out
.
block
.
create_var
(
dtype
=
out
.
dtype
)
paddle
.
fluid
.
layers
.
fill_constant
(
[
1
],
out
.
dtype
,
margin
,
out
=
margin_var
)
margin_var
=
paddle
.
full
(
shape
=
[
1
],
fill_value
=
margin
,
dtype
=
out
.
dtype
)
out
=
paddle
.
add
(
out
,
margin_var
)
result_out
=
helper
.
create_variable_for_type_inference
(
input
.
dtype
)
...
...
@@ -686,7 +682,7 @@ def l1_loss(input, label, reduction='mean', name=None):
"The value of 'reduction' in L1Loss should be 'sum', 'mean' or 'none', but "
"received %s, which is not allowed."
%
reduction
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
unreduced
=
_elementwise_op_in_dygraph
(
input
,
label
,
axis
=-
1
,
act
=
'abs'
,
op_name
=
'elementwise_sub'
)
if
reduction
==
'mean'
:
...
...
@@ -776,7 +772,7 @@ def nll_loss(input,
input_dims
))
n
=
input_shape
[
0
]
c
=
input_shape
[
1
]
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
input_dims
!=
2
and
input_dims
!=
4
:
input
,
_
=
_C_ops
.
reshape2
(
input
,
None
,
'shape'
,
[
n
,
c
,
1
,
-
1
])
label
,
_
=
_C_ops
.
reshape2
(
label
,
None
,
'shape'
,
[
n
,
1
,
-
1
])
...
...
@@ -995,7 +991,7 @@ def mse_loss(input, label, reduction='mean', name=None):
"'reduction' in 'mse_loss' should be 'sum', 'mean' or 'none', "
"but received {}."
.
format
(
reduction
))
if
not
paddle
.
fluid
.
framework
.
in_dygraph
_mode
():
if
not
in_dynamic
_mode
():
paddle
.
fluid
.
data_feeder
.
check_variable_and_dtype
(
input
,
'input'
,
[
'float32'
,
'float64'
],
'mse_loss'
)
paddle
.
fluid
.
data_feeder
.
check_variable_and_dtype
(
...
...
@@ -1099,7 +1095,7 @@ def ctc_loss(log_probs,
loss_out
=
fluid
.
layers
.
warpctc
(
log_probs
,
labels
,
blank
,
norm_by_times
,
input_lengths
,
label_lengths
)
loss_out
=
fluid
.
layers
.
squeeze
(
loss_out
,
[
-
1
])
loss_out
=
paddle
.
squeeze
(
loss_out
,
[
-
1
])
assert
reduction
in
[
'mean'
,
'sum'
,
'none'
]
if
reduction
==
'mean'
:
loss_out
=
paddle
.
mean
(
loss_out
/
label_lengths
)
...
...
@@ -1319,7 +1315,7 @@ def margin_cross_entropy(logits,
if
input_dims
-
1
==
label_dims
:
label
=
paddle
.
unsqueeze
(
label
,
axis
=-
1
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
softmax
,
loss
=
_C_ops
.
margin_cross_entropy
(
logits
,
label
,
'ring_id'
,
ring_id
,
'rank'
,
rank
,
'nranks'
,
nranks
,
'margin1'
,
margin1
,
'margin2'
,
margin2
,
'margin3'
,
margin3
,
'scale'
,
...
...
@@ -1664,7 +1660,7 @@ def cross_entropy(input,
(got nput_dims{}, label_dims{})'
.
format
(
input_dims
,
label_dims
))
if
input_dims
-
1
==
label_dims
:
label
=
paddle
.
unsqueeze
(
label
,
axis
=
axis
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
soft_label
==
False
:
valid_label
=
paddle
.
cast
(
label
!=
ignore_index
,
dtype
=
label
.
dtype
)
*
label
...
...
@@ -1978,7 +1974,7 @@ def sigmoid_focal_loss(logit,
"Expected one dimension of normalizer in sigmoid_focal_loss but got {}."
.
format
(
normalizer_dims
))
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
one
=
_varbase_creator
(
dtype
=
logit
.
dtype
)
_C_ops
.
fill_constant
(
one
,
'value'
,
float
(
1.0
),
'force_cpu'
,
False
,
'dtype'
,
one
.
dtype
,
...
...
@@ -2025,7 +2021,7 @@ def sigmoid_focal_loss(logit,
loss
=
paddle
.
nn
.
functional
.
binary_cross_entropy_with_logits
(
logit
,
label
,
reduction
=
'none'
,
name
=
bce_name
)
pred
=
fluid
.
layers
.
sigmoid
(
logit
)
pred
=
paddle
.
nn
.
functional
.
sigmoid
(
logit
)
p_t
=
pred
*
label
+
(
1
-
pred
)
*
(
1
-
label
)
alpha_t
=
alpha
*
label
+
(
1
-
alpha
)
*
(
1
-
label
)
...
...
@@ -2125,7 +2121,7 @@ def hinge_embedding_loss(input, label, margin=1.0, reduction='mean', name=None):
"'reduction' in 'hinge_embedding_loss' should be 'sum', 'mean' or 'none', "
"but received {}."
.
format
(
reduction
))
if
not
paddle
.
fluid
.
framework
.
in_dygraph
_mode
():
if
not
in_dynamic
_mode
():
check_variable_and_dtype
(
input
,
'input'
,
[
'float32'
,
'float64'
],
'hinge_embedding_loss'
)
check_variable_and_dtype
(
label
,
'label'
,
[
'float32'
,
'float64'
],
...
...
python/paddle/nn/functional/norm.py
浏览文件 @
a710738e
...
...
@@ -17,13 +17,13 @@ import paddle
import
paddle.fluid
as
fluid
from
...fluid.data_feeder
import
check_variable_and_dtype
,
check_type
from
...fluid.layer_helper
import
LayerHelper
from
...fluid.framework
import
in_dygraph_mode
,
core
from
...framework
import
create_parameter
from
..initializer
import
Constant
from
...framework
import
ParamAttr
from
...fluid
import
core
,
dygraph_utils
from
...fluid
import
dygraph_utils
import
numbers
from
paddle
import
_C_ops
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -78,7 +78,7 @@ def normalize(x, p=2, axis=1, epsilon=1e-12, name=None):
# [[0. 0.24253564 0.37139067]
# [1. 0.97014254 0.9284767 ]]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
eps
=
fluid
.
dygraph
.
base
.
to_variable
([
epsilon
],
dtype
=
x
.
dtype
)
out
=
_C_ops
.
p_norm
(
x
,
'axis'
,
axis
,
'porder'
,
float
(
p
),
'keepdim'
,
True
,
'epsilon'
,
epsilon
)
...
...
@@ -104,7 +104,7 @@ def normalize(x, p=2, axis=1, epsilon=1e-12, name=None):
helper
.
append_op
(
type
=
'p_norm'
,
inputs
=
{
'X'
:
x
},
outputs
=
{
'Out'
:
out
},
attrs
=
attrs
)
eps
=
out
.
block
.
create_var
(
dtype
=
out
.
dtype
)
paddle
.
fluid
.
layers
.
fill_constant
([
1
],
out
.
dtype
,
epsilon
,
out
=
eps
)
eps
=
paddle
.
full
(
shape
=
[
1
],
fill_value
=
epsilon
,
dtype
=
out
.
dtype
)
return
paddle
.
divide
(
x
,
paddle
.
maximum
(
out
,
eps
),
name
=
name
)
...
...
@@ -180,7 +180,7 @@ def batch_norm(x,
else
:
trainable_statistics
=
not
use_global_stats
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
# for dygraph need tuple
attrs
=
(
"momentum"
,
momentum
,
"epsilon"
,
epsilon
,
"is_test"
,
not
training
,
"data_layout"
,
data_format
,
"use_mkldnn"
,
False
,
...
...
@@ -301,7 +301,7 @@ def layer_norm(x,
str_normalized_shape
[
1
:]
+
', but got input shape '
+
str
(
input_shape
))
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
pre_act
,
_
,
_
=
_C_ops
.
layer_norm
(
x
,
weight
,
bias
,
'epsilon'
,
epsilon
,
'begin_norm_axis'
,
begin_norm_axis
)
return
dygraph_utils
.
_append_activation_in_dygraph
(
pre_act
,
act
=
None
)
...
...
@@ -385,7 +385,7 @@ def instance_norm(x,
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
out
,
_
,
_
=
_C_ops
.
instance_norm
(
x
,
weight
,
bias
,
"epsilon"
,
eps
,
"momentum"
,
momentum
,
"data_format"
,
data_format
)
...
...
@@ -474,7 +474,7 @@ def local_response_norm(x,
y = paddle.nn.functional.local_response_norm(x, size=5)
print(y.shape) # [3, 3, 112, 112]
"""
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
],
'local_response_norm'
)
if
data_format
not
in
[
'NCL'
,
'NLC'
,
'NCHW'
,
'NHWC'
,
'NCDHW'
,
'NDHWC'
]:
raise
ValueError
(
...
...
python/paddle/nn/functional/pooling.py
浏览文件 @
a710738e
...
...
@@ -13,13 +13,11 @@
# limitations under the License.
# TODO: define pooling functions
from
...fluid
import
core
from
...fluid.framework
import
in_dygraph_mode
from
...fluid.layers
import
utils
,
LayerHelper
from
...tensor.manipulation
import
unsqueeze
,
squeeze
from
...fluid.data_feeder
import
check_type
,
check_variable_and_dtype
from
paddle
import
_C_ops
from
paddle
import
_C_ops
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -210,7 +208,7 @@ def avg_pool1d(x,
"""
"""NCL to NCHW"""
data_format
=
"NCHW"
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'avg_pool1d'
)
_check_input
(
x
,
3
)
x
=
unsqueeze
(
x
,
[
2
])
...
...
@@ -232,7 +230,7 @@ def avg_pool1d(x,
# use 2d to implenment 1d should expand padding in advance.
padding
=
_expand_low_nd_padding
(
padding
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
output
=
_C_ops
.
pool2d
(
x
,
'pooling_type'
,
'avg'
,
'ksize'
,
kernel_size
,
'global_pooling'
,
False
,
'strides'
,
stride
,
'paddings'
,
padding
,
'padding_algorithm'
,
...
...
@@ -346,7 +344,7 @@ def avg_pool2d(x,
padding
,
padding_algorithm
=
_update_padding_nd
(
padding
,
2
,
channel_last
,
ceil_mode
=
ceil_mode
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
output
=
_C_ops
.
pool2d
(
x
,
'pooling_type'
,
'avg'
,
'ksize'
,
kernel_size
,
'global_pooling'
,
False
,
'padding_algorithm'
,
padding_algorithm
,
'strides'
,
stride
,
'paddings'
,
...
...
@@ -468,7 +466,7 @@ def avg_pool3d(x,
_check_value_limitation
(
kernel_size
,
"kernel_size"
,
min_limit
=
1e-3
)
_check_value_limitation
(
stride
,
"stride"
,
min_limit
=
1e-3
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
output
=
_C_ops
.
pool3d
(
x
,
'pooling_type'
,
'avg'
,
'ksize'
,
kernel_size
,
'strides'
,
stride
,
'paddings'
,
padding
,
'global_pooling'
,
False
,
'padding_algorithm'
,
...
...
@@ -571,7 +569,7 @@ def max_pool1d(x,
"""
"""NCL to NCHW"""
data_format
=
"NCHW"
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'max_pool1d'
)
_check_input
(
x
,
3
)
x
=
unsqueeze
(
x
,
[
2
])
...
...
@@ -587,7 +585,7 @@ def max_pool1d(x,
# use 2d to implenment 1d should expand padding in advance.
padding
=
_expand_low_nd_padding
(
padding
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
return_mask
:
pool_out
=
_C_ops
.
max_pool2d_with_index
(
x
,
'ksize'
,
kernel_size
,
'global_pooling'
,
False
,
'strides'
,
...
...
@@ -746,7 +744,7 @@ def max_unpool1d(x,
output_size
=
_unpool_output_size
(
x
,
kernel_size
,
stride
,
padding
,
output_size
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
output
=
_C_ops
.
unpool
(
x
,
indices
,
'unpooling_type'
,
'max'
,
'ksize'
,
kernel_size
,
'strides'
,
stride
,
'paddings'
,
padding
,
"output_size"
,
output_size
,
...
...
@@ -861,7 +859,7 @@ def max_unpool2d(x,
output_size
=
_unpool_output_size
(
x
,
kernel_size
,
stride
,
padding
,
output_size
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
output
=
_C_ops
.
unpool
(
x
,
indices
,
'unpooling_type'
,
'max'
,
'ksize'
,
kernel_size
,
'strides'
,
stride
,
'paddings'
,
padding
,
"output_size"
,
output_size
,
...
...
@@ -973,7 +971,7 @@ def max_unpool3d(x,
output_size
=
_unpool_output_size
(
x
,
kernel_size
,
stride
,
padding
,
output_size
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
output
=
_C_ops
.
unpool3d
(
x
,
indices
,
'unpooling_type'
,
'max'
,
'ksize'
,
kernel_size
,
'strides'
,
stride
,
'paddings'
,
padding
,
"output_size"
,
output_size
,
...
...
@@ -1029,7 +1027,7 @@ def max_pool2d(x,
"When setting return_mask to true, data_format must be set to NCHW in API:max_pool2d"
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
return_mask
:
output
=
_C_ops
.
max_pool2d_with_index
(
x
,
'ksize'
,
kernel_size
,
'global_pooling'
,
False
,
'strides'
,
...
...
@@ -1160,7 +1158,7 @@ def max_pool3d(x,
"When setting return_mask to true, data_format must be set to NCDHW in API:max_pool3d"
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
if
return_mask
:
output
=
_C_ops
.
max_pool3d_with_index
(
x
,
'pooling_type'
,
'max'
,
'ksize'
,
kernel_size
,
'strides'
,
...
...
@@ -1250,7 +1248,7 @@ def adaptive_avg_pool1d(x, output_size, name=None):
# pool_out shape: [1, 3, 16])
"""
pool_type
=
'avg'
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'adaptive_pool2d'
)
check_type
(
output_size
,
'pool_size'
,
(
int
),
'adaptive_pool1d'
)
...
...
@@ -1258,7 +1256,7 @@ def adaptive_avg_pool1d(x, output_size, name=None):
pool_size
=
[
1
]
+
utils
.
convert_to_list
(
output_size
,
1
,
'pool_size'
)
x
=
unsqueeze
(
x
,
[
2
])
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
pool_out
=
_C_ops
.
pool2d
(
x
,
'pooling_type'
,
pool_type
,
'ksize'
,
pool_size
,
'adaptive'
,
True
)
return
squeeze
(
pool_out
,
[
2
])
...
...
@@ -1333,7 +1331,7 @@ def adaptive_avg_pool2d(x, output_size, data_format='NCHW', name=None):
output_size=[3, 3])
# out.shape is [2, 3, 3, 3]
"""
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float16'
,
'float32'
,
'float64'
],
'adaptive_avg_pool2d'
)
check_type
(
data_format
,
'data_format'
,
str
,
'adaptive_avg_pool2d'
)
...
...
@@ -1357,7 +1355,7 @@ def adaptive_avg_pool2d(x, output_size, data_format='NCHW', name=None):
if
output_size
[
1
]
==
None
:
output_size
[
1
]
=
in_w
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
output
=
_C_ops
.
pool2d
(
x
,
'pooling_type'
,
'avg'
,
'ksize'
,
output_size
,
'global_pooling'
,
False
,
'adaptive'
,
True
,
'data_format'
,
data_format
)
...
...
@@ -1437,7 +1435,7 @@ def adaptive_avg_pool3d(x, output_size, data_format='NCDHW', name=None):
output_size=[3, 3, 3])
# out.shape is [2, 3, 3, 3, 3]
"""
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'adaptive_avg_pool3d'
)
check_type
(
data_format
,
'data_format'
,
str
,
'adaptive_avg_pool3d'
)
...
...
@@ -1463,7 +1461,7 @@ def adaptive_avg_pool3d(x, output_size, data_format='NCDHW', name=None):
if
output_size
[
2
]
==
None
:
output_size
[
2
]
=
in_w
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
output
=
_C_ops
.
pool3d
(
x
,
'pooling_type'
,
'avg'
,
'ksize'
,
output_size
,
'global_pooling'
,
False
,
'adaptive'
,
True
,
'data_format'
,
data_format
)
...
...
@@ -1537,7 +1535,7 @@ def adaptive_max_pool1d(x, output_size, return_mask=False, name=None):
# pool_out shape: [1, 3, 16] indices shape: [1, 3, 16]
"""
pool_type
=
'max'
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'adaptive_max_pool1d'
)
check_type
(
output_size
,
'pool_size'
,
int
,
'adaptive_max_pool1d'
)
...
...
@@ -1547,7 +1545,7 @@ def adaptive_max_pool1d(x, output_size, return_mask=False, name=None):
pool_size
=
[
1
]
+
utils
.
convert_to_list
(
output_size
,
1
,
'pool_size'
)
x
=
unsqueeze
(
x
,
[
2
])
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
pool_out
=
_C_ops
.
max_pool2d_with_index
(
x
,
'pooling_type'
,
pool_type
,
'ksize'
,
pool_size
,
'adaptive'
,
True
)
return
(
squeeze
(
pool_out
[
0
],
[
2
]),
squeeze
(
...
...
@@ -1619,7 +1617,7 @@ def adaptive_max_pool2d(x, output_size, return_mask=False, name=None):
output_size=[3, 3])
# out.shape is [2, 3, 3, 3]
"""
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'adaptive_max_pool2d'
)
check_type
(
return_mask
,
'return_mask'
,
bool
,
'adaptive_max_pool2d'
)
...
...
@@ -1636,7 +1634,7 @@ def adaptive_max_pool2d(x, output_size, return_mask=False, name=None):
if
output_size
[
1
]
==
None
:
output_size
[
1
]
=
in_w
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
pool_out
=
_C_ops
.
max_pool2d_with_index
(
x
,
'pooling_type'
,
'max'
,
'ksize'
,
output_size
,
'adaptive'
,
True
)
return
pool_out
if
return_mask
else
pool_out
[
0
]
...
...
@@ -1710,7 +1708,7 @@ def adaptive_max_pool3d(x, output_size, return_mask=False, name=None):
# out.shape is [2, 3, 3, 3, 3]
"""
if
not
in_dy
graph
_mode
():
if
not
in_dy
namic
_mode
():
check_variable_and_dtype
(
x
,
'x'
,
[
'float32'
,
'float64'
],
'adaptive_max_pool3d'
)
check_type
(
return_mask
,
'return_mask'
,
bool
,
'adaptive_max_pool3d'
)
...
...
@@ -1729,7 +1727,7 @@ def adaptive_max_pool3d(x, output_size, return_mask=False, name=None):
if
output_size
[
2
]
==
None
:
output_size
[
2
]
=
in_w
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
pool_out
=
_C_ops
.
max_pool3d_with_index
(
x
,
'pooling_type'
,
'max'
,
'ksize'
,
output_size
,
'adaptive'
,
True
)
return
pool_out
if
return_mask
else
pool_out
[
0
]
...
...
python/paddle/nn/functional/sparse_attention.py
浏览文件 @
a710738e
...
...
@@ -14,10 +14,10 @@
import
warnings
import
paddle
from
...fluid.framework
import
in_dygraph_mode
,
default_main_program
from
...fluid.framework
import
default_main_program
from
paddle.fluid.layer_helper
import
LayerHelper
from
...fluid.framework
import
in_dygraph_mode
from
paddle
import
_C_ops
from
paddle
import
in_dynamic_mode
def
sparse_attention
(
query
,
...
...
@@ -143,7 +143,7 @@ def sparse_attention(query,
# [1.60885942, 2.60885954],
# [1.99830270, 2.99830270]]]]
"""
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
result_attention
,
result_sdd
,
result_softmax
=
_C_ops
.
sparse_attention
(
query
,
key
,
value
,
sparse_csr_offset
,
sparse_csr_columns
,
key_padding_mask
,
attn_mask
)
...
...
python/paddle/nn/functional/vision.py
浏览文件 @
a710738e
...
...
@@ -13,13 +13,14 @@
# limitations under the License.
from
...device
import
get_cudnn_version
from
...fluid.framework
import
core
,
in_dygraph_mode
from
...static
import
Variable
from
...fluid.layer_helper
import
LayerHelper
from
...fluid.data_feeder
import
check_variable_and_dtype
from
...fluid
import
dygraph_utils
import
numpy
as
np
from
paddle
import
_C_ops
from
...device
import
is_compiled_with_rocm
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -83,14 +84,14 @@ def affine_grid(theta, out_shape, align_corners=True, name=None):
use_cudnn
=
True
else
:
use_cudnn
=
False
if
core
.
is_compiled_with_rocm
():
if
is_compiled_with_rocm
():
use_cudnn
=
False
# ROCM platform do not have MIOPEN kernel for affine_grid
if
not
(
isinstance
(
out_shape
,
list
)
or
isinstance
(
out_shape
,
tuple
)
or
\
isinstance
(
out_shape
,
Variable
)):
raise
ValueError
(
"The out_shape should be a list, tuple or Tensor."
)
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
_out_shape
=
out_shape
.
numpy
().
tolist
()
if
isinstance
(
out_shape
,
Variable
)
else
out_shape
return
_C_ops
.
affine_grid
(
theta
,
"output_shape"
,
_out_shape
,
...
...
@@ -263,7 +264,7 @@ def grid_sample(x,
cudnn_version
=
get_cudnn_version
()
use_cudnn
=
False
if
not
core
.
is_compiled_with_rocm
()
and
(
if
not
is_compiled_with_rocm
()
and
(
cudnn_version
is
not
None
)
and
align_corners
and
mode
==
'bilinear'
and
padding_mode
==
'zeros'
:
use_cudnn
=
True
...
...
@@ -271,7 +272,7 @@ def grid_sample(x,
x
.
stop_gradient
=
False
grid
.
stop_gradient
=
False
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'mode'
,
mode
,
'padding_mode'
,
padding_mode
,
'align_corners'
,
align_corners
,
'use_cudnn'
,
use_cudnn
)
out
=
getattr
(
_C_ops
,
'grid_sampler'
)(
x
,
grid
,
*
attrs
)
...
...
@@ -329,7 +330,7 @@ def pixel_shuffle(x, upscale_factor, data_format="NCHW", name=None):
"But recevie Attr(data_format): {} "
.
format
(
data_format
))
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
return
_C_ops
.
pixel_shuffle
(
x
,
"upscale_factor"
,
upscale_factor
,
"data_format"
,
data_format
)
...
...
python/paddle/nn/initializer/assign.py
浏览文件 @
a710738e
...
...
@@ -11,11 +11,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from
...fluid
import
framework
from
...fluid
import
core
from
...fluid
import
unique_name
from
...fluid.core
import
VarDesc
import
paddle
from
...fluid.data_feeder
import
check_type
from
...fluid.initializer
import
NumpyArrayInitializer
...
...
@@ -88,13 +84,14 @@ class Assign(NumpyArrayInitializer):
def
__init__
(
self
,
value
,
name
=
None
):
import
numpy
check_type
(
value
,
'value'
,
(
numpy
.
ndarray
,
list
,
tuple
,
framework
.
Variable
),
'Assign'
)
(
numpy
.
ndarray
,
list
,
tuple
,
paddle
.
static
.
Variable
),
'Assign'
)
if
(
isinstance
(
value
,
(
list
,
tuple
))):
value
=
numpy
.
array
(
value
)
# TODO: value is already is a tensor, accounting efficiency maybe it does not need to convert tensor to numpy data and then initialized.
if
(
isinstance
(
value
,
framework
.
Variable
)):
if
(
isinstance
(
value
,
paddle
.
static
.
Variable
)):
value
=
value
.
numpy
()
super
(
Assign
,
self
).
__init__
(
value
)
python/paddle/nn/initializer/dirac.py
浏览文件 @
a710738e
...
...
@@ -15,7 +15,9 @@
from
...fluid.initializer
import
Initializer
from
...fluid.data_feeder
import
check_variable_and_dtype
from
...fluid.core
import
VarDesc
from
...fluid
import
unique_name
,
framework
from
...fluid
import
framework
from
paddle
import
in_dynamic_mode
from
paddle.utils
import
unique_name
__all__
=
[]
...
...
@@ -221,6 +223,6 @@ class Dirac(Initializer):
"out_dtype"
:
var
.
dtype
},
stop_gradient
=
True
)
if
not
framework
.
in_dygraph
_mode
():
if
not
in_dynamic
_mode
():
var
.
op
=
op
return
op
python/paddle/nn/initializer/orthogonal.py
浏览文件 @
a710738e
...
...
@@ -14,9 +14,9 @@
from
...fluid.initializer
import
Initializer
from
...fluid.data_feeder
import
check_variable_and_dtype
from
...fluid.core
import
VarDesc
from
...fluid
import
unique_name
,
framework
from
...fluid
import
framework
from
...tensor
import
diag
,
transpose
,
sign
,
qr
,
reshape
from
paddle.utils
import
unique_name
__all__
=
[]
...
...
python/paddle/nn/layer/activation.py
浏览文件 @
a710738e
...
...
@@ -14,8 +14,6 @@
# TODO: define activation functions of neural network
from
...fluid
import
core
from
...fluid.framework
import
in_dygraph_mode
from
...framework
import
ParamAttr
from
..initializer
import
Constant
from
paddle.framework
import
get_default_dtype
...
...
python/paddle/nn/layer/common.py
浏览文件 @
a710738e
...
...
@@ -15,10 +15,10 @@
# TODO: define the common classes to build a neural network
import
paddle
from
...fluid.dygraph
import
Flatten
# noqa: F401
from
...fluid.framework
import
in_dygraph_mode
from
..
import
functional
as
F
from
...fluid.framework
import
_dygraph_tracer
from
paddle.nn
import
Layer
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -1456,7 +1456,7 @@ class Embedding(Layer):
dtype
=
self
.
_dtype
,
is_bias
=
False
)
if
in_dy
graph
_mode
()
and
padding_idx
!=
-
1
:
if
in_dy
namic
_mode
()
and
padding_idx
!=
-
1
:
with
paddle
.
no_grad
():
self
.
weight
[
padding_idx
]
=
0.0
...
...
python/paddle/nn/layer/conv.py
浏览文件 @
a710738e
...
...
@@ -16,14 +16,15 @@
import
numpy
as
np
from
...fluid
import
get_flags
from
...fluid
import
core
from
paddle
import
get_flags
from
...device
import
get_cudnn_version
from
..
import
Layer
from
..initializer
import
Normal
from
..
import
functional
as
F
from
...fluid.layers
import
utils
from
..functional.conv
import
_update_padding_nd
from
...device
import
is_compiled_with_cuda
from
...device
import
is_compiled_with_rocm
__all__
=
[]
...
...
@@ -138,7 +139,7 @@ class _ConvNd(Layer):
cudnn_version
=
get_cudnn_version
()
self
.
_use_cudnn
=
True
if
(
core
.
is_compiled_with_cuda
()
and
self
.
_use_cudnn
=
True
if
(
is_compiled_with_cuda
()
and
cudnn_version
is
not
None
)
else
False
self
.
_op_type
=
"conv"
+
str
(
dims
)
+
'd'
...
...
@@ -146,13 +147,13 @@ class _ConvNd(Layer):
in_channels
!=
1
and
out_channels
%
in_channels
==
0
):
self
.
_op_type
=
'depthwise_conv2d'
if
core
.
is_compiled_with_rocm
():
if
is_compiled_with_rocm
():
self
.
_use_cudnn
=
True
else
:
self
.
_use_cudnn
=
False
if
(
core
.
is_compiled_with_cuda
()
and
get_flags
(
"FLAGS_conv2d_disable_cudnn"
)[
"FLAGS_conv2d_disable_cudnn"
]):
if
(
is_compiled_with_cuda
()
and
get_flags
(
"FLAGS_conv2d_disable_cudnn"
)[
"FLAGS_conv2d_disable_cudnn"
]):
self
.
_use_cudnn
=
False
def
extra_repr
(
self
):
...
...
python/paddle/nn/layer/distance.py
浏览文件 @
a710738e
...
...
@@ -16,10 +16,10 @@ import numpy as np
import
paddle
from
..
import
Layer
from
...fluid.framework
import
core
,
in_dygraph_mode
from
...fluid.data_feeder
import
check_variable_and_dtype
,
check_type
from
...fluid.layer_helper
import
LayerHelper
from
paddle
import
_C_ops
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -78,7 +78,7 @@ class PairwiseDistance(Layer):
check_type
(
self
.
keepdim
,
'keepdim'
,
(
bool
),
'PairwiseDistance'
)
def
forward
(
self
,
x
,
y
):
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
sub
=
_C_ops
.
elementwise_sub
(
x
,
y
)
return
_C_ops
.
p_norm
(
sub
,
'axis'
,
1
,
'porder'
,
self
.
p
,
'keepdim'
,
self
.
keepdim
,
'epsilon'
,
self
.
epsilon
)
...
...
python/paddle/nn/layer/loss.py
浏览文件 @
a710738e
...
...
@@ -16,11 +16,11 @@
# TODO: define loss functions of neural network
import
numpy
as
np
import
paddle.fluid
as
fluid
import
paddle.fluid.core
as
core
import
paddle
from
..
import
functional
as
F
from
paddle.fluid.framework
import
core
,
in_dygraph_mode
,
_varbase_creator
from
paddle.fluid.framework
import
_varbase_creator
from
..
import
Layer
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -591,7 +591,7 @@ class MSELoss(Layer):
self
.
reduction
=
reduction
def
forward
(
self
,
input
,
label
):
if
not
fluid
.
framework
.
in_dygraph
_mode
():
if
not
in_dynamic
_mode
():
fluid
.
data_feeder
.
check_variable_and_dtype
(
input
,
'input'
,
[
'float32'
,
'float64'
],
'MSELoss'
)
fluid
.
data_feeder
.
check_variable_and_dtype
(
...
...
python/paddle/nn/layer/norm.py
浏览文件 @
a710738e
...
...
@@ -33,12 +33,11 @@ from ...fluid.dygraph import BatchNorm # noqa: F401
from
...fluid.dygraph
import
SpectralNorm
# noqa: F401
from
...framework
import
get_default_dtype
,
set_default_dtype
from
...fluid.framework
import
in_dygraph_mode
from
..initializer
import
Constant
from
...framework
import
ParamAttr
from
...fluid.data_feeder
import
check_variable_and_dtype
,
check_type
from
...fluid
import
core
,
dygraph_utils
from
...fluid
import
dygraph_utils
from
..functional
import
batch_norm
,
layer_norm
,
instance_norm
...
...
@@ -49,6 +48,7 @@ from ...framework import no_grad
from
..
import
functional
as
F
from
paddle
import
_C_ops
from
..
import
Layer
from
paddle
import
in_dynamic_mode
__all__
=
[]
...
...
@@ -1087,7 +1087,7 @@ class SyncBatchNorm(_BatchNormBase):
### train mode: use mini-batch stats, eval mode: use global stats
### use_global_stats only support False in sync_batch_norm
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
"momentum"
,
self
.
_momentum
,
"epsilon"
,
self
.
_epsilon
,
"is_test"
,
not
self
.
training
,
"data_layout"
,
self
.
_data_format
,
"use_mkldnn"
,
False
,
"fuse_with_relu"
,
...
...
python/paddle/nn/layer/rnn.py
浏览文件 @
a710738e
...
...
@@ -33,6 +33,11 @@ from paddle.fluid.layers import utils
from
paddle.fluid.layers.utils
import
map_structure
,
flatten
,
pack_sequence_as
from
paddle.fluid.data_feeder
import
convert_dtype
from
paddle
import
_C_ops
from
paddle
import
in_dynamic_mode
from
paddle.framework
import
core
from
paddle.static
import
default_startup_program
from
paddle.static
import
program_guard
__all__
=
[]
...
...
@@ -970,8 +975,8 @@ class RNNBase(LayerList):
# dropout state may also can be hided and avoid saving
# should dropout state be persistable for static-graph
self
.
_dropout_state
=
self
.
create_variable
(
dtype
=
fluid
.
core
.
VarDesc
.
VarType
.
UINT8
)
if
fluid
.
framework
.
in_dygraph
_mode
():
dtype
=
core
.
VarDesc
.
VarType
.
UINT8
)
if
in_dynamic
_mode
():
with
paddle
.
no_grad
():
_C_ops
.
coalesce_tensor
(
self
.
_all_weights
,
self
.
_all_weights
,
self
.
_flat_weight
[
0
],
"copy_data"
,
...
...
@@ -979,8 +984,8 @@ class RNNBase(LayerList):
params
[
0
].
dtype
)
return
# for static-graph, append coalesce_tensor into startup program
with
fluid
.
program_guard
(
fluid
.
default_startup_program
(),
fluid
.
default_startup_program
()):
with
program_guard
(
default_startup_program
(),
default_startup_program
()):
with
paddle
.
no_grad
():
self
.
_helper
.
append_op
(
type
=
"coalesce_tensor"
,
...
...
@@ -999,7 +1004,7 @@ class RNNBase(LayerList):
if
not
self
.
time_major
:
inputs
=
paddle
.
tensor
.
transpose
(
inputs
,
[
1
,
0
,
2
])
if
fluid
.
framework
.
in_dygraph
_mode
():
if
in_dynamic
_mode
():
_
,
_
,
out
,
state
=
_C_ops
.
rnn
(
inputs
,
initial_states
,
self
.
_all_weights
,
sequence_length
,
self
.
_dropout_state
,
self
.
state_components
,
'dropout_prob'
,
...
...
@@ -1014,7 +1019,7 @@ class RNNBase(LayerList):
for
i
in
range
(
self
.
state_components
)
]
reserve
=
self
.
_helper
.
create_variable_for_type_inference
(
dtype
=
fluid
.
core
.
VarDesc
.
VarType
.
UINT8
,
stop_gradient
=
True
)
dtype
=
core
.
VarDesc
.
VarType
.
UINT8
,
stop_gradient
=
True
)
inputs
=
{
'Input'
:
inputs
,
...
...
python/paddle/nn/quant/functional_layers.py
浏览文件 @
a710738e
...
...
@@ -12,13 +12,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from
...fluid.dygraph
import
layers
from
...tensor
import
math
,
manipulation
from
..
import
Layer
__all__
=
[]
class
FloatFunctionalLayer
(
layers
.
Layer
):
class
FloatFunctionalLayer
(
Layer
):
def
__init__
(
self
):
super
(
FloatFunctionalLayer
,
self
).
__init__
()
...
...
python/paddle/nn/quant/quant_layers.py
浏览文件 @
a710738e
...
...
@@ -12,19 +12,19 @@
# See the License for the specific language governing permissions and
# limitations under the License.
from
paddle.fluid.dygraph
import
layers
from
paddle.fluid
import
core
from
paddle.framework
import
core
from
paddle.fluid
import
dygraph_utils
from
paddle.
fluid
import
unique_name
from
paddle.f
luid.param_attr
import
ParamAttr
from
paddle.
utils
import
unique_name
from
paddle.f
ramework
import
ParamAttr
from
paddle.fluid.framework
import
_varbase_creator
from
paddle.fluid.framework
import
in_dygraph_mode
from
paddle.fluid.initializer
import
Constant
from
paddle.nn.initializer
import
Constant
from
paddle.fluid.data_feeder
import
check_variable_and_dtype
from
paddle.nn
import
functional
as
F
import
logging
from
paddle.fluid.log_helper
import
get_logger
from
paddle
import
_C_ops
from
paddle
import
in_dynamic_mode
from
paddle.nn
import
Layer
__all__
=
[
'FakeQuantAbsMax'
,
...
...
@@ -43,7 +43,7 @@ _logger = get_logger(
__name__
,
logging
.
INFO
,
fmt
=
'%(asctime)s-%(levelname)s: %(message)s'
)
class
FakeQuantAbsMax
(
layers
.
Layer
):
class
FakeQuantAbsMax
(
Layer
):
r
"""
FakeQuantAbsMax layer does the abs_max quant and then dequant.
Its computational formula is described as below:
...
...
@@ -76,7 +76,7 @@ class FakeQuantAbsMax(layers.Layer):
self
.
_scale
=
None
def
forward
(
self
,
input
):
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'bit_length'
,
self
.
_quant_bits
)
quant_out
=
_varbase_creator
(
type
=
input
.
type
,
...
...
@@ -125,7 +125,7 @@ class FakeQuantAbsMax(layers.Layer):
return
quant_out
class
FakeQuantMovingAverageAbsMax
(
layers
.
Layer
):
class
FakeQuantMovingAverageAbsMax
(
Layer
):
r
"""
FakeQuantMovingAverageAbsMax layer does the moving_average_abs_max quant and then dequant.
Its computational formula is described as below:
...
...
@@ -175,7 +175,7 @@ class FakeQuantMovingAverageAbsMax(layers.Layer):
self
.
_accum
.
stop_gradient
=
True
def
forward
(
self
,
input
):
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'moving_rate'
,
self
.
_moving_rate
,
'bit_length'
,
self
.
_quant_bits
,
'is_test'
,
not
self
.
training
)
quant_out
=
_varbase_creator
(
...
...
@@ -223,7 +223,7 @@ class FakeQuantMovingAverageAbsMax(layers.Layer):
return
quant_out
class
FakeQuantChannelWiseAbsMax
(
layers
.
Layer
):
class
FakeQuantChannelWiseAbsMax
(
Layer
):
def
__init__
(
self
,
name
=
None
,
channel_num
=
None
,
...
...
@@ -253,7 +253,7 @@ class FakeQuantChannelWiseAbsMax(layers.Layer):
self
.
_scale
=
None
def
forward
(
self
,
input
):
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'bit_length'
,
self
.
_quant_bits
,
'quant_axis'
,
self
.
_quant_axis
)
quant_out
=
_varbase_creator
(
...
...
@@ -306,7 +306,7 @@ class FakeQuantChannelWiseAbsMax(layers.Layer):
return
quant_out
class
MovingAverageAbsMaxScale
(
layers
.
Layer
):
class
MovingAverageAbsMaxScale
(
Layer
):
def
__init__
(
self
,
name
=
None
,
moving_rate
=
0.9
,
dtype
=
'float32'
):
r
"""
MovingAverageMaxScale layer is used to calculating the output quantization
...
...
@@ -345,7 +345,7 @@ class MovingAverageAbsMaxScale(layers.Layer):
self
.
_accum
.
stop_gradient
=
True
def
forward
(
self
,
input
):
if
in_dy
graph
_mode
():
if
in_dy
namic
_mode
():
attrs
=
(
'moving_rate'
,
self
.
_moving_rate
,
'is_test'
,
not
self
.
training
)
state
=
self
.
_state
if
self
.
training
else
None
...
...
@@ -393,7 +393,7 @@ class MovingAverageAbsMaxScale(layers.Layer):
QuantStub
=
MovingAverageAbsMaxScale
class
QuantizedConv2D
(
layers
.
Layer
):
class
QuantizedConv2D
(
Layer
):
"""
The computational logic of QuantizedConv2D is the same with Conv2D.
The only difference is that its inputs are all fake quantized.
...
...
@@ -482,7 +482,7 @@ class QuantizedConv2D(layers.Layer):
data_format
=
self
.
_data_format
)
class
QuantizedConv2DTranspose
(
layers
.
Layer
):
class
QuantizedConv2DTranspose
(
Layer
):
"""
The computational logic of QuantizedConv2DTranspose is the same with Conv2DTranspose.
The only difference is that its inputs are all fake quantized.
...
...
@@ -588,7 +588,7 @@ class QuantizedConv2DTranspose(layers.Layer):
data_format
=
self
.
_data_format
)
class
QuantizedLinear
(
layers
.
Layer
):
class
QuantizedLinear
(
Layer
):
"""
The computational logic of QuantizedLinear is the same with Linear.
The only difference is that its inputs are all fake quantized.
...
...
@@ -657,7 +657,7 @@ class QuantizedLinear(layers.Layer):
return
out
class
MAOutputScaleLayer
(
layers
.
Layer
):
class
MAOutputScaleLayer
(
Layer
):
"""
Add MovingAverageMaxScale layer to the behind of the input layer.
Calculate the scale (moving average abs max) for the output of the input layer.
...
...
@@ -684,7 +684,7 @@ class MAOutputScaleLayer(layers.Layer):
return
self
.
_ma_output_scale
(
out
)
class
FakeQuantMAOutputScaleLayer
(
layers
.
Layer
):
class
FakeQuantMAOutputScaleLayer
(
Layer
):
"""
Add FakeQuantMovingAverageAbsMax layer to the behind of the input layer.
"""
...
...
python/paddle/nn/utils/weight_norm_hook.py
浏览文件 @
a710738e
...
...
@@ -11,7 +11,7 @@
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
import
paddle
import
numpy
as
np
from
...
import
fluid
from
...fluid
import
dygraph
...
...
@@ -39,25 +39,25 @@ def l2_norm(x, axis, epsilon=1e-12, name=None):
"axis"
:
1
if
axis
is
None
else
axis
,
"epsilon"
:
epsilon
,
})
return
F
.
squeeze
(
norm
,
axe
s
=
[
axis
])
return
paddle
.
squeeze
(
norm
,
axi
s
=
[
axis
])
def
norm_except_dim
(
p
,
dim
):
shape
=
p
.
shape
ndims
=
len
(
shape
)
if
dim
==
-
1
:
return
F
.
sqrt
(
F
.
reduce_sum
(
F
.
square
(
p
))
+
1e-12
)
return
paddle
.
sqrt
(
paddle
.
sum
(
paddle
.
square
(
p
))
+
1e-12
)
elif
dim
==
0
:
p_matrix
=
F
.
reshape
(
p
,
(
shape
[
0
],
-
1
))
p_matrix
=
paddle
.
reshape
(
p
,
(
shape
[
0
],
-
1
))
return
l2_norm
(
p_matrix
,
axis
=
1
)
elif
dim
==
ndims
-
1
:
p_matrix
=
F
.
reshape
(
p
,
(
-
1
,
shape
[
-
1
]))
p_matrix
=
paddle
.
reshape
(
p
,
(
-
1
,
shape
[
-
1
]))
return
l2_norm
(
p_matrix
,
axis
=
0
)
else
:
perm
=
list
(
range
(
ndims
))
perm
[
0
]
=
dim
perm
[
dim
]
=
0
p_transposed
=
F
.
transpose
(
p
,
perm
)
p_transposed
=
paddle
.
transpose
(
p
,
perm
)
return
norm_except_dim
(
p_transposed
,
0
)
...
...
@@ -66,25 +66,25 @@ def _weight_norm(v, g, dim):
ndims
=
len
(
shape
)
if
dim
==
-
1
:
v_normalized
=
v
/
(
F
.
sqrt
(
F
.
reduce_sum
(
F
.
square
(
v
)))
+
1e-12
)
v_normalized
=
v
/
(
paddle
.
sqrt
(
paddle
.
sum
(
paddle
.
square
(
v
)))
+
1e-12
)
elif
dim
==
0
:
p_matrix
=
F
.
reshape
(
v
,
(
shape
[
0
],
-
1
))
p_matrix
=
paddle
.
reshape
(
v
,
(
shape
[
0
],
-
1
))
v_normalized
=
F
.
l2_normalize
(
p_matrix
,
axis
=
1
)
v_normalized
=
F
.
reshape
(
v_normalized
,
shape
)
v_normalized
=
paddle
.
reshape
(
v_normalized
,
shape
)
elif
dim
==
ndims
-
1
:
p_matrix
=
F
.
reshape
(
v
,
(
-
1
,
shape
[
-
1
]))
p_matrix
=
paddle
.
reshape
(
v
,
(
-
1
,
shape
[
-
1
]))
v_normalized
=
F
.
l2_normalize
(
p_matrix
,
axis
=
0
)
v_normalized
=
F
.
reshape
(
v_normalized
,
shape
)
v_normalized
=
paddle
.
reshape
(
v_normalized
,
shape
)
else
:
perm
=
list
(
range
(
ndims
))
perm
[
0
]
=
dim
perm
[
dim
]
=
0
p_transposed
=
F
.
transpose
(
v
,
perm
)
p_transposed
=
paddle
.
transpose
(
v
,
perm
)
transposed_shape
=
p_transposed
.
shape
p_matrix
=
F
.
reshape
(
p_transposed
,
(
p_transposed
.
shape
[
0
],
-
1
))
p_matrix
=
paddle
.
reshape
(
p_transposed
,
(
p_transposed
.
shape
[
0
],
-
1
))
v_normalized
=
F
.
l2_normalize
(
p_matrix
,
axis
=
1
)
v_normalized
=
F
.
reshape
(
v_normalized
,
transposed_shape
)
v_normalized
=
F
.
transpose
(
v_normalized
,
perm
)
v_normalized
=
paddle
.
reshape
(
v_normalized
,
transposed_shape
)
v_normalized
=
paddle
.
transpose
(
v_normalized
,
perm
)
weight
=
F
.
elementwise_mul
(
v_normalized
,
g
,
axis
=
dim
if
dim
is
not
None
else
-
1
)
return
weight
...
...
@@ -130,9 +130,9 @@ class WeightNorm(object):
layer
.
add_parameter
(
name
+
"_v"
,
v
)
g
=
layer
.
create_parameter
(
g_var
.
shape
,
dtype
=
g_var
.
dtype
)
layer
.
add_parameter
(
name
+
'_g'
,
g
)
with
dygraph
.
no_grad
():
F
.
assign
(
w
,
v
)
F
.
assign
(
g_var
,
g
)
with
paddle
.
no_grad
():
paddle
.
assign
(
w
,
v
)
paddle
.
assign
(
g_var
,
g
)
setattr
(
layer
,
name
,
fn
.
compute_weight
(
layer
))
layer
.
register_forward_pre_hook
(
fn
)
...
...
@@ -145,8 +145,8 @@ class WeightNorm(object):
del
layer
.
_parameters
[
self
.
name
+
'_v'
]
w
=
layer
.
create_parameter
(
w_var
.
shape
,
dtype
=
w_var
.
dtype
)
layer
.
add_parameter
(
self
.
name
,
w
)
with
dygraph
.
no_grad
():
F
.
assign
(
w_var
,
w
)
with
paddle
.
no_grad
():
paddle
.
assign
(
w_var
,
w
)
def
__call__
(
self
,
layer
,
inputs
):
setattr
(
layer
,
self
.
name
,
self
.
compute_weight
(
layer
))
...
...
python/paddle/tensor/manipulation.py
浏览文件 @
a710738e
...
...
@@ -30,6 +30,7 @@ from ..fluid.layers import unstack # noqa: F401
from
..fluid.layers
import
scatter_nd
# noqa: F401
from
..fluid.layers
import
shard_index
# noqa: F401
from
..fluid.layers
import
crop_tensor
as
crop
# noqa: F401
from
..fluid.layers.nn
import
_elementwise_op_in_dygraph
from
..fluid
import
layers
from
..fluid.dygraph.inplace_utils
import
inplace_apis_in_dygraph_only
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录