Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
40405d13
P
Paddle
项目概览
机器未来
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
1
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
1
Issue
1
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
40405d13
编写于
3月 02, 2019
作者:
D
dengkaipeng
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add doc and API.spec. test=develop
上级
e90e0bdf
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
61 addition
and
0 deletion
+61
-0
paddle/fluid/API.spec
paddle/fluid/API.spec
+1
-0
paddle/fluid/operators/kldiv_loss_op.cc
paddle/fluid/operators/kldiv_loss_op.cc
+18
-0
python/paddle/fluid/layers/nn.py
python/paddle/fluid/layers/nn.py
+33
-0
python/paddle/fluid/tests/unittests/test_layers.py
python/paddle/fluid/tests/unittests/test_layers.py
+9
-0
未找到文件。
paddle/fluid/API.spec
浏览文件 @
40405d13
...
...
@@ -220,6 +220,7 @@ paddle.fluid.layers.py_func (ArgSpec(args=['func', 'x', 'out', 'backward_func',
paddle.fluid.layers.psroi_pool (ArgSpec(args=['input', 'rois', 'output_channels', 'spatial_scale', 'pooled_height', 'pooled_width', 'name'], varargs=None, keywords=None, defaults=(None,)), ('document', '1546136806fef5c08f6918544bd9151d'))
paddle.fluid.layers.teacher_student_sigmoid_loss (ArgSpec(args=['input', 'label', 'soft_max_up_bound', 'soft_max_lower_bound'], varargs=None, keywords=None, defaults=(15.0, -15.0)), ('document', '2f6ff96864054a31aa4bb659c6722c99'))
paddle.fluid.layers.huber_loss (ArgSpec(args=['input', 'label', 'delta'], varargs=None, keywords=None, defaults=None), ('document', '431a4301c35032166ec029f7432c80a7'))
paddle.fluid.layers.kldiv_loss (ArgSpec(args=['x', 'target', 'reduction', 'name'], varargs=None, keywords=None, defaults=('mean', None)), ('document', '26e3842d408b0af4653433ce1591a473449a78f6'))
paddle.fluid.layers.tree_conv (ArgSpec(args=['nodes_vector', 'edge_set', 'output_size', 'num_filters', 'max_depth', 'act', 'param_attr', 'bias_attr', 'name'], varargs=None, keywords=None, defaults=(1, 2, 'tanh', None, None, None)), ('document', '34ea12ac9f10a65dccbc50100d12e607'))
paddle.fluid.layers.data (ArgSpec(args=['name', 'shape', 'append_batch_size', 'dtype', 'lod_level', 'type', 'stop_gradient'], varargs=None, keywords=None, defaults=(True, 'float32', 0, VarType.LOD_TENSOR, True)), ('document', '33bbd42027d872b3818b3d64ec52e139'))
paddle.fluid.layers.open_files (ArgSpec(args=['filenames', 'shapes', 'lod_levels', 'dtypes', 'thread_num', 'buffer_size', 'pass_num', 'is_test'], varargs=None, keywords=None, defaults=(None, None, 1, None)), ('document', 'b1ae2e1cc0750e58726374061ea90ecc'))
...
...
paddle/fluid/operators/kldiv_loss_op.cc
浏览文件 @
40405d13
...
...
@@ -89,6 +89,24 @@ class KLDivLossOpMaker : public framework::OpProtoAndCheckerMaker {
This operator calculates the Kullback-Leibler divergence loss
between Input(X) and Input(Target).
KL divergence loss calculates as follows:
$$l(x, y) = y * (\log y - x)$$
While :attr:`reduction` is :attr:`none`, output loss is in
same shape with Input(X), loss in each point is calculated
seperately and no reduction applied.
While :attr:`reduction` is :attr:`mean`, output loss in in
shape of [1] and loss value is the mean value of all losses.
While :attr:`reduction` is :attr:`sum`, output loss in in
shape of [1] and loss value is the sum value of all losses.
While :attr:`reduction` is :attr:`batchmean`, output loss in
in shape of [1] and loss value is the sum value of all losses
divided by batch size.
)DOC"
);
}
};
...
...
python/paddle/fluid/layers/nn.py
浏览文件 @
40405d13
...
...
@@ -186,6 +186,7 @@ __all__ = [
'psroi_pool'
,
'teacher_student_sigmoid_loss'
,
'huber_loss'
,
'kldiv_loss'
,
'tree_conv'
,
]
...
...
@@ -10588,6 +10589,38 @@ def huber_loss(input, label, delta):
return
out
@
templatedoc
()
def
kldiv_loss
(
x
,
target
,
reduction
=
'mean'
,
name
=
None
):
"""
${comment}
Args:
x (Variable): ${x_comment}
target (Variable): ${target_comment}
reduction (Variable): ${reduction_comment}
name (str, default None): The name of this layer.
Returns:
kldiv\_loss (Variable): The KL divergence loss.
Examples:
.. code-block:: python
x = fluid.layers.data(name='x', shape=[4,2,2], dtype='float32')
target = fluid.layers.data(name='target', shape=[4,2,2], dtype='float32')
loss = fluid.layers.kldiv_loss(x=x, target=target, reduction='batchmean')
"""
helper
=
LayerHelper
(
'kldiv_loss'
,
**
locals
())
loss
=
helper
.
create_variable_for_type_inference
(
dtype
=
x
.
dtype
)
helper
.
append_op
(
type
=
'kldiv_loss'
,
inputs
=
{
'X'
:
x
,
'Target'
:
target
},
outputs
=
{
'Loss'
:
loss
},
attrs
=
{
'reduction'
:
reduction
})
return
loss
@
templatedoc
()
def
tree_conv
(
nodes_vector
,
edge_set
,
...
...
python/paddle/fluid/tests/unittests/test_layers.py
浏览文件 @
40405d13
...
...
@@ -1046,6 +1046,15 @@ class TestBook(unittest.TestCase):
out
=
layers
.
spectral_norm
(
weight
,
dim
=
1
,
power_iters
=
1
)
self
.
assertIsNotNone
(
out
)
def
test_kldiv_loss
(
self
):
program
=
Program
()
with
program_guard
(
program
):
x
=
layers
.
data
(
name
=
'x'
,
shape
=
[
32
,
128
,
128
],
dtype
=
"float32"
)
target
=
layers
.
data
(
name
=
'target'
,
shape
=
[
32
,
128
,
128
],
dtype
=
"float32"
)
loss
=
layers
.
kldiv_loss
(
x
=
x
,
target
=
target
,
reduction
=
'batchmean'
)
self
.
assertIsNotNone
(
loss
)
print
(
str
(
program
))
def
test_shuffle_channel
(
self
):
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录