Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
机器未来
Paddle
提交
d31c92a2
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看板
未验证
提交
d31c92a2
编写于
9月 23, 2019
作者:
R
ruri
提交者:
GitHub
9月 23, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add mse_loss (#19759)
* add mse_loss op
上级
85b398f1
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
100 addition
and
0 deletion
+100
-0
paddle/fluid/API.spec
paddle/fluid/API.spec
+1
-0
python/paddle/fluid/layers/nn.py
python/paddle/fluid/layers/nn.py
+38
-0
python/paddle/fluid/tests/unittests/test_layers.py
python/paddle/fluid/tests/unittests/test_layers.py
+8
-0
python/paddle/fluid/tests/unittests/test_mse_loss.py
python/paddle/fluid/tests/unittests/test_mse_loss.py
+53
-0
未找到文件。
paddle/fluid/API.spec
浏览文件 @
d31c92a2
...
...
@@ -297,6 +297,7 @@ paddle.fluid.layers.deformable_roi_pooling (ArgSpec(args=['input', 'rois', 'tran
paddle.fluid.layers.filter_by_instag (ArgSpec(args=['ins', 'ins_tag', 'filter_tag', 'is_lod'], varargs=None, keywords=None, defaults=None), ('document', '7703a2088af8de4128b143ff1164ca4a'))
paddle.fluid.layers.shard_index (ArgSpec(args=['input', 'index_num', 'nshards', 'shard_id', 'ignore_value'], varargs=None, keywords=None, defaults=(-1,)), ('document', '5786fdbba6753ecd6cbce5e6b0889924'))
paddle.fluid.layers.hard_swish (ArgSpec(args=['x', 'threshold', 'scale', 'offset', 'name'], varargs=None, keywords=None, defaults=(6.0, 6.0, 3.0, None)), ('document', '6a5152a7015c62cb8278fc24cb456459'))
paddle.fluid.layers.mse_loss (ArgSpec(args=['input', 'label'], varargs=None, keywords=None, defaults=None), ('document', 'd9ede6469288636e1b3233b461a165c9'))
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', '9d7806e31bdf727c1a23b8782a09b545'))
paddle.fluid.layers.read_file (ArgSpec(args=['reader'], varargs=None, keywords=None, defaults=None), ('document', '88367daf9a30c9ab83adc5d7221e23ef'))
paddle.fluid.layers.double_buffer (ArgSpec(args=['reader', 'place', 'name'], varargs=None, keywords=None, defaults=(None, None)), ('document', '44724c493f41a124abc7531c2740e2e3'))
...
...
python/paddle/fluid/layers/nn.py
浏览文件 @
d31c92a2
...
...
@@ -220,6 +220,7 @@ __all__ = [
'filter_by_instag',
'shard_index',
'hard_swish',
'mse_loss',
]
kIgnoreIndex = -100
...
...
@@ -14215,3 +14216,40 @@ def hard_swish(x, threshold=6.0, scale=6.0, offset=3.0, name=None):
'scale': scale,
'offset': offset})
return out
def mse_loss(input, label):
"""
**Mean square error layer**
This layer accepts input predications and target label and returns the mean square error.
The loss can be described as:
.. math::
Out = mean((X - Y)^2)
In the above equation:
* :math:`X`: Input predications, a tensor.
* :math:`Y`: Input labels, a tensor.
* :math:`Out`: Output value, same shape with :math:`X`.
Args:
input (Variable): Input tensor, has predictions.
label (Variable): Label tensor, has target labels.
Returns:
Variable: The tensor variable storing the mean square error difference of input and label.
Examples:
.. code-block:: python
import paddle.fluid as fluid
y = fluid.layers.data(name='y', shape=[1], dtype='float32')
y_predict = fluid.layers.data(name='y_predict', shape=[1], dtype='float32')
mse = fluid.layers.mse_loss(input=y_predict, label=y)
"""
return reduce_mean(square_error_cost(input, label))
python/paddle/fluid/tests/unittests/test_layers.py
浏览文件 @
d31c92a2
...
...
@@ -2046,6 +2046,14 @@ class TestBook(LayerTest):
out
=
layers
.
pixel_shuffle
(
x
,
upscale_factor
=
3
)
return
(
out
)
def
make_mse_loss
(
self
):
with
program_guard
(
fluid
.
default_main_program
(),
fluid
.
default_startup_program
()):
x
=
self
.
_get_data
(
name
=
"X"
,
shape
=
[
1
],
dtype
=
"float32"
)
y
=
self
.
_get_data
(
name
=
"Y"
,
shape
=
[
1
],
dtype
=
"float32"
)
out
=
layers
.
mse_loss
(
input
=
x
,
label
=
y
)
return
(
out
)
def
make_square_error_cost
(
self
):
with
program_guard
(
fluid
.
default_main_program
(),
fluid
.
default_startup_program
()):
...
...
python/paddle/fluid/tests/unittests/test_mse_loss.py
0 → 100644
浏览文件 @
d31c92a2
# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# 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
__future__
import
print_function
import
unittest
import
numpy
as
np
import
sys
import
paddle.fluid.core
as
core
import
paddle.fluid
as
fluid
import
paddle.fluid.layers
as
layers
from
paddle.fluid.executor
import
Executor
class
TestMseLoss
(
unittest
.
TestCase
):
def
test_mse_loss
(
self
):
input_val
=
np
.
random
.
uniform
(
0.1
,
0.5
,
(
2
,
3
)).
astype
(
"float32"
)
label_val
=
np
.
random
.
uniform
(
0.1
,
0.5
,
(
2
,
3
)).
astype
(
"float32"
)
sub
=
input_val
-
label_val
np_result
=
np
.
mean
(
sub
*
sub
)
input_var
=
layers
.
create_tensor
(
dtype
=
"float32"
,
name
=
"input"
)
label_var
=
layers
.
create_tensor
(
dtype
=
"float32"
,
name
=
"label"
)
layers
.
assign
(
input
=
input_val
,
output
=
input_var
)
layers
.
assign
(
input
=
label_val
,
output
=
label_var
)
output
=
layers
.
mse_loss
(
input
=
input_var
,
label
=
label_var
)
for
use_cuda
in
([
False
,
True
]
if
core
.
is_compiled_with_cuda
()
else
[
False
]):
place
=
fluid
.
CUDAPlace
(
0
)
if
use_cuda
else
fluid
.
CPUPlace
()
exe
=
Executor
(
place
)
result
=
exe
.
run
(
fluid
.
default_main_program
(),
feed
=
{
"input"
:
input_var
,
"label"
:
label_var
},
fetch_list
=
[
output
])
self
.
assertTrue
(
np
.
isclose
(
np_result
,
result
).
all
())
if
__name__
==
"__main__"
:
unittest
.
main
()
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录