Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleDetection
提交
9c47f36d
P
PaddleDetection
项目概览
PaddlePaddle
/
PaddleDetection
大约 1 年 前同步成功
通知
695
Star
11112
Fork
2696
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
184
列表
看板
标记
里程碑
合并请求
40
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleDetection
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
184
Issue
184
列表
看板
标记
里程碑
合并请求
40
合并请求
40
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
9c47f36d
编写于
2月 27, 2019
作者:
D
dengkaipeng
提交者:
ceci3
3月 06, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix spectral_norm doc. test=develop
上级
91f85315
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
23 addition
and
13 deletion
+23
-13
paddle/fluid/operators/spectral_norm_op.cc
paddle/fluid/operators/spectral_norm_op.cc
+18
-10
paddle/fluid/operators/spectral_norm_op.cu
paddle/fluid/operators/spectral_norm_op.cu
+1
-1
paddle/fluid/operators/spectral_norm_op.h
paddle/fluid/operators/spectral_norm_op.h
+3
-1
python/paddle/fluid/tests/unittests/test_spectral_norm_op.py
python/paddle/fluid/tests/unittests/test_spectral_norm_op.py
+1
-1
未找到文件。
paddle/fluid/operators/spectral_norm_op.cc
浏览文件 @
9c47f36d
/* Copyright (c) 201
8
PaddlePaddle Authors. All Rights Reserve.
/* Copyright (c) 201
9
PaddlePaddle Authors. All Rights Reserve.
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
...
...
@@ -84,20 +84,28 @@ class SpectralNormOpMaker : public framework::OpProtoAndCheckerMaker {
"The weight_u tensor of spectral_norm operator, "
"This can be a 1-D tensor in shape [H, 1],"
"H is the 1st dimentions of Weight after reshape"
"corresponding by Attr(dim)."
);
"corresponding by Attr(dim). As for Attr(dim) = 1"
"in conv2d layer with weight shape [M, C, K1, K2]"
"Weight will be reshape to [C, M*K1*Kw], U will"
"be in shape [C, 1]."
);
AddInput
(
"V"
,
"The weight_
u
tensor of spectral_norm operator, "
"The weight_
v
tensor of spectral_norm operator, "
"This can be a 1-D tensor in shape [W, 1],"
"W is the 2nd dimentions of Weight after reshape"
"corresponding by Attr(dim)."
);
"corresponding by Attr(dim). As for Attr(dim) = 1"
"in conv2d layer with weight shape [M, C, K1, K2]"
"Weight will be reshape to [C, M*K1*Kw], V will"
"be in shape [M*K1*K2, 1]."
);
AddOutput
(
"Out"
,
"The output weight tensor of spectral_norm operator, "
"This tensor is in same shape with Input(Weight)."
);
AddAttr
<
int
>
(
"dim"
,
"dimension corresponding to number of outputs,"
"default 0 for fc layer, and 1 for conv1d, conv2d, conv3d"
"layers"
)
"it should be set as 0 if Input(Weight) is the"
"weight of fc layer, and should be set as 1 if"
"Input(Weight) is the weight of conv layer,"
"default is 0."
.
SetDefault
(
0
);
AddAttr
<
int
>
(
"power_iters"
,
"number of power iterations to calculate"
...
...
@@ -109,13 +117,13 @@ class SpectralNormOpMaker : public framework::OpProtoAndCheckerMaker {
.
SetDefault
(
1e-12
);
AddComment
(
R"DOC(
This layer calculate the spectral normalize value of weight of
This layer calculate
s
the spectral normalize value of weight of
fc, conv1d, conv2d, conv3d layers which should be 2-D, 3-D, 4-D, 5-D
tensor.
Spectral normalization stabilizes the training of criti
s
in GANs
(Generative Adversarial Networks). This layer
s
rescaling weight tensor
wi
ht
spectral normalize value.
Spectral normalization stabilizes the training of criti
c
in GANs
(Generative Adversarial Networks). This layer rescaling weight tensor
wi
th
spectral normalize value.
For spectral normalization calculations, we rescaling weight
tensor with \sigma, while \sigma{\mathbf{W}} is
...
...
paddle/fluid/operators/spectral_norm_op.cu
浏览文件 @
9c47f36d
/* Copyright (c) 201
8
PaddlePaddle Authors. All Rights Reserve.
/* Copyright (c) 201
9
PaddlePaddle Authors. All Rights Reserve.
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
...
...
paddle/fluid/operators/spectral_norm_op.h
浏览文件 @
9c47f36d
/* Copyright (c) 201
8
PaddlePaddle Authors. All Rights Reserve.
/* Copyright (c) 201
9
PaddlePaddle Authors. All Rights Reserve.
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
...
...
@@ -73,11 +73,13 @@ static inline void CalcMatrixSigmaAndNormWeight(
const
int
w
=
weight
->
dims
()[
1
];
for
(
int
i
=
0
;
i
<
power_iters
;
i
++
)
{
// V = W^T * U / ||W^T * U||_2
blas
.
MatMul
(
*
weight
,
true
,
*
u
,
false
,
T
(
1
),
v
,
T
(
0
));
auto
v_t_norm
=
v_t
.
square
().
sum
().
sqrt
().
eval
().
reshape
(
Array1
(
1
)).
broadcast
(
Array1
(
w
));
v_t
.
device
(
place
)
=
v_t
/
(
v_t_norm
+
v_t_norm
.
constant
(
eps
));
// U = W^T * V / ||W^T * V||_2
blas
.
MatMul
(
*
weight
,
false
,
*
v
,
false
,
T
(
1
),
u
,
T
(
0
));
auto
u_t_norm
=
u_t
.
square
().
sum
().
sqrt
().
eval
().
reshape
(
Array1
(
1
)).
broadcast
(
...
...
python/paddle/fluid/tests/unittests/test_spectral_norm_op.py
浏览文件 @
9c47f36d
# Copyright (c) 201
8
PaddlePaddle Authors. All Rights Reserved.
# Copyright (c) 201
9
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.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录