Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
TonyTonyFun
Paddle
提交
496d64eb
P
Paddle
项目概览
TonyTonyFun
/
Paddle
与 Fork 源项目一致
Fork自
PaddlePaddle / Paddle
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
Paddle
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
496d64eb
编写于
11月 16, 2016
作者:
L
Luo Tao
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support rectangle input for CNN
上级
65612425
变更
29
展开全部
隐藏空白更改
内联
并排
Showing
29 changed file
with
360 addition
and
269 deletion
+360
-269
paddle/gserver/layers/BatchNormBaseLayer.cpp
paddle/gserver/layers/BatchNormBaseLayer.cpp
+4
-9
paddle/gserver/layers/BatchNormBaseLayer.h
paddle/gserver/layers/BatchNormBaseLayer.h
+2
-3
paddle/gserver/layers/BilinearInterpLayer.cpp
paddle/gserver/layers/BilinearInterpLayer.cpp
+3
-3
paddle/gserver/layers/ConvBaseLayer.cpp
paddle/gserver/layers/ConvBaseLayer.cpp
+9
-6
paddle/gserver/layers/ConvOperator.cpp
paddle/gserver/layers/ConvOperator.cpp
+9
-4
paddle/gserver/layers/ConvProjection.cpp
paddle/gserver/layers/ConvProjection.cpp
+1
-1
paddle/gserver/layers/DataLayer.cpp
paddle/gserver/layers/DataLayer.cpp
+2
-2
paddle/gserver/layers/ExpandConvBaseLayer.cpp
paddle/gserver/layers/ExpandConvBaseLayer.cpp
+16
-14
paddle/gserver/layers/MaxOutLayer.cpp
paddle/gserver/layers/MaxOutLayer.cpp
+3
-3
paddle/gserver/layers/NormLayer.cpp
paddle/gserver/layers/NormLayer.cpp
+3
-0
paddle/gserver/layers/NormLayer.h
paddle/gserver/layers/NormLayer.h
+1
-1
paddle/gserver/layers/NormProjectionLayer.cpp
paddle/gserver/layers/NormProjectionLayer.cpp
+1
-1
paddle/gserver/layers/SpatialPyramidPoolLayer.cpp
paddle/gserver/layers/SpatialPyramidPoolLayer.cpp
+7
-6
paddle/gserver/tests/img_pool_a.conf
paddle/gserver/tests/img_pool_a.conf
+0
-2
paddle/gserver/tests/test_LayerGrad.cpp
paddle/gserver/tests/test_LayerGrad.cpp
+38
-25
paddle/parameter/Argument.cpp
paddle/parameter/Argument.cpp
+2
-0
paddle/trainer/tests/test_config.conf
paddle/trainer/tests/test_config.conf
+0
-1
proto/ModelConfig.proto.m4
proto/ModelConfig.proto.m4
+24
-16
python/paddle/trainer/config_parser.py
python/paddle/trainer/config_parser.py
+117
-121
python/paddle/trainer_config_helpers/layers.py
python/paddle/trainer_config_helpers/layers.py
+11
-15
python/paddle/trainer_config_helpers/tests/configs/protostr/img_layers.protostr
...config_helpers/tests/configs/protostr/img_layers.protostr
+13
-0
python/paddle/trainer_config_helpers/tests/configs/protostr/img_trans_layers.protostr
..._helpers/tests/configs/protostr/img_trans_layers.protostr
+11
-0
python/paddle/trainer_config_helpers/tests/configs/protostr/projections.protostr
...onfig_helpers/tests/configs/protostr/projections.protostr
+2
-0
python/paddle/trainer_config_helpers/tests/configs/protostr/test_bilinear_interp.protostr
...pers/tests/configs/protostr/test_bilinear_interp.protostr
+20
-6
python/paddle/trainer_config_helpers/tests/configs/protostr/test_maxout.protostr
...onfig_helpers/tests/configs/protostr/test_maxout.protostr
+40
-16
python/paddle/trainer_config_helpers/tests/configs/protostr/test_spp_layer.protostr
...ig_helpers/tests/configs/protostr/test_spp_layer.protostr
+9
-3
python/paddle/trainer_config_helpers/tests/configs/test_bilinear_interp.py
...iner_config_helpers/tests/configs/test_bilinear_interp.py
+1
-1
python/paddle/trainer_config_helpers/tests/configs/test_maxout.py
...addle/trainer_config_helpers/tests/configs/test_maxout.py
+9
-4
python/paddle/trainer_config_helpers/tests/configs/test_spp_layer.py
...le/trainer_config_helpers/tests/configs/test_spp_layer.py
+2
-6
未找到文件。
paddle/gserver/layers/BatchNormBaseLayer.cpp
浏览文件 @
496d64eb
...
@@ -61,15 +61,10 @@ bool BatchNormBaseLayer::init(const LayerMap& layerMap,
...
@@ -61,15 +61,10 @@ bool BatchNormBaseLayer::init(const LayerMap& layerMap,
void
BatchNormBaseLayer
::
calFeatureMapSize
()
{
void
BatchNormBaseLayer
::
calFeatureMapSize
()
{
const
ImageConfig
&
conf
=
config_
.
inputs
(
0
).
image_conf
();
const
ImageConfig
&
conf
=
config_
.
inputs
(
0
).
image_conf
();
if
(
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
()
==
0
&&
imageH_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
();
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
()
==
0
)
{
imageW_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
();
imgSize_
=
conf
.
img_size
();
if
(
imageH_
==
0
)
imageH_
=
conf
.
img_size_y
();
imageH_
=
imgSize_
;
if
(
imageW_
==
0
)
imageW_
=
conf
.
img_size
();
imageW_
=
imgSize_
;
}
else
{
imageH_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
();
imageW_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
();
}
imgPixels_
=
imageH_
*
imageW_
;
imgPixels_
=
imageH_
*
imageW_
;
getOutput
().
setFrameHeight
(
imageH_
);
getOutput
().
setFrameHeight
(
imageH_
);
getOutput
().
setFrameWidth
(
imageW_
);
getOutput
().
setFrameWidth
(
imageW_
);
...
...
paddle/gserver/layers/BatchNormBaseLayer.h
浏览文件 @
496d64eb
...
@@ -78,9 +78,8 @@ protected:
...
@@ -78,9 +78,8 @@ protected:
MatrixPtr
savedMean_
;
MatrixPtr
savedMean_
;
MatrixPtr
savedInvVar_
;
MatrixPtr
savedInvVar_
;
/// Height or width of input image feature, now height is equal to width.
/// Height or width of input image feature.
/// imgSize is 1 if the input is fully-connected layer.
/// Both of them are 1 if the input is fully-connected layer.
int
imgSize_
;
int
imageH_
;
int
imageH_
;
int
imageW_
;
int
imageW_
;
/// Height * Width.
/// Height * Width.
...
...
paddle/gserver/layers/BilinearInterpLayer.cpp
浏览文件 @
496d64eb
...
@@ -26,15 +26,15 @@ size_t BilinearInterpLayer::getSize() {
...
@@ -26,15 +26,15 @@ size_t BilinearInterpLayer::getSize() {
const
BilinearInterpConfig
&
conf
=
config_
.
inputs
(
0
).
bilinear_interp_conf
();
const
BilinearInterpConfig
&
conf
=
config_
.
inputs
(
0
).
bilinear_interp_conf
();
if
(
inImgH_
==
0
)
{
if
(
inImgH_
==
0
)
{
inImgH_
=
conf
.
img_size_y
();
inImgH_
=
conf
.
im
age_conf
().
im
g_size_y
();
}
}
if
(
inImgW_
==
0
)
{
if
(
inImgW_
==
0
)
{
inImgW_
=
conf
.
im
g_size_x
();
inImgW_
=
conf
.
im
age_conf
().
img_size
();
}
}
outImgH_
=
conf
.
out_size_y
();
outImgH_
=
conf
.
out_size_y
();
outImgW_
=
conf
.
out_size_x
();
outImgW_
=
conf
.
out_size_x
();
numChannels_
=
conf
.
num_
channels
();
numChannels_
=
conf
.
image_conf
().
channels
();
CHECK
(
outImgH_
>
0
&&
outImgW_
>
0
);
CHECK
(
outImgH_
>
0
&&
outImgW_
>
0
);
CHECK
(
inImgH_
>
0
&&
inImgW_
>
0
);
CHECK
(
inImgH_
>
0
&&
inImgW_
>
0
);
...
...
paddle/gserver/layers/ConvBaseLayer.cpp
浏览文件 @
496d64eb
...
@@ -37,11 +37,13 @@ bool ConvBaseLayer::init(const LayerMap& layerMap,
...
@@ -37,11 +37,13 @@ bool ConvBaseLayer::init(const LayerMap& layerMap,
filterSizeY_
.
push_back
(
conf
.
filter_size_y
());
filterSizeY_
.
push_back
(
conf
.
filter_size_y
());
filterPixels_
.
push_back
(
filterSize_
.
back
()
*
filterSizeY_
.
back
());
filterPixels_
.
push_back
(
filterSize_
.
back
()
*
filterSizeY_
.
back
());
channels_
.
push_back
(
conf
.
channels
());
channels_
.
push_back
(
conf
.
channels
());
imgSizeH_
.
push_back
(
conf
.
img_size
());
imgSizeH_
.
push_back
(
conf
.
has_img_size_y
()
?
conf
.
img_size_y
()
:
conf
.
img_size
());
imgSizeW_
.
push_back
(
conf
.
img_size
());
imgSizeW_
.
push_back
(
conf
.
img_size
());
groups_
.
push_back
(
conf
.
groups
());
groups_
.
push_back
(
conf
.
groups
());
filterChannels_
.
push_back
(
conf
.
filter_channels
());
filterChannels_
.
push_back
(
conf
.
filter_channels
());
outputH_
.
push_back
(
conf
.
output_x
());
outputH_
.
push_back
(
conf
.
has_output_y
()
?
conf
.
output_y
()
:
conf
.
output_x
());
outputW_
.
push_back
(
conf
.
output_x
());
outputW_
.
push_back
(
conf
.
output_x
());
}
}
...
@@ -90,11 +92,12 @@ size_t ConvBaseLayer::calOutputSize() {
...
@@ -90,11 +92,12 @@ size_t ConvBaseLayer::calOutputSize() {
for
(
size_t
i
=
0
;
i
<
inputLayers_
.
size
();
i
++
)
{
for
(
size_t
i
=
0
;
i
<
inputLayers_
.
size
();
i
++
)
{
inH
.
push_back
(
inputLayers_
[
i
]
->
getOutput
().
getFrameHeight
());
inH
.
push_back
(
inputLayers_
[
i
]
->
getOutput
().
getFrameHeight
());
inW
.
push_back
(
inputLayers_
[
i
]
->
getOutput
().
getFrameWidth
());
inW
.
push_back
(
inputLayers_
[
i
]
->
getOutput
().
getFrameWidth
());
const
ConvConfig
&
conf
=
config_
.
inputs
(
i
).
conv_conf
();
if
(
isDeconv_
)
{
if
(
isDeconv_
)
{
if
(
inH
[
i
]
==
0
)
if
(
inH
[
i
]
==
0
)
inH
[
i
]
=
conf
ig_
.
inputs
(
i
).
conv_conf
()
.
output_x
();
inH
[
i
]
=
conf
.
has_output_y
()
?
conf
.
output_y
()
:
conf
.
output_x
();
if
(
inW
[
i
]
==
0
)
if
(
inW
[
i
]
==
0
)
inW
[
i
]
=
conf
ig_
.
inputs
(
i
).
conv_conf
()
.
output_x
();
inW
[
i
]
=
conf
.
output_x
();
outH
.
push_back
(
outH
.
push_back
(
imageSize
(
inH
[
i
],
filterSizeY_
[
i
],
paddingY_
[
i
],
strideY_
[
i
],
imageSize
(
inH
[
i
],
filterSizeY_
[
i
],
paddingY_
[
i
],
strideY_
[
i
],
caffeMode_
));
caffeMode_
));
...
@@ -103,9 +106,9 @@ size_t ConvBaseLayer::calOutputSize() {
...
@@ -103,9 +106,9 @@ size_t ConvBaseLayer::calOutputSize() {
caffeMode_
));
caffeMode_
));
}
else
{
}
else
{
if
(
inH
[
i
]
==
0
)
if
(
inH
[
i
]
==
0
)
inH
[
i
]
=
conf
ig_
.
inputs
(
i
).
conv_conf
()
.
img_size
();
inH
[
i
]
=
conf
.
has_img_size_y
()
?
conf
.
img_size_y
()
:
conf
.
img_size
();
if
(
inW
[
i
]
==
0
)
if
(
inW
[
i
]
==
0
)
inW
[
i
]
=
conf
ig_
.
inputs
(
i
).
conv_conf
()
.
img_size
();
inW
[
i
]
=
conf
.
img_size
();
outH
.
push_back
(
outH
.
push_back
(
outputSize
(
inH
[
i
],
filterSizeY_
[
i
],
paddingY_
[
i
],
strideY_
[
i
],
outputSize
(
inH
[
i
],
filterSizeY_
[
i
],
paddingY_
[
i
],
strideY_
[
i
],
caffeMode_
));
caffeMode_
));
...
...
paddle/gserver/layers/ConvOperator.cpp
浏览文件 @
496d64eb
...
@@ -93,9 +93,9 @@ private:
...
@@ -93,9 +93,9 @@ private:
bool
caffeMode_
;
bool
caffeMode_
;
int
inputOffset_
,
outputOffset_
,
weightOffset_
;
int
inputOffset_
,
outputOffset_
,
weightOffset_
;
int
numFilters_
;
int
numFilters_
;
int
padding_
,
stride_
,
filterSize_
,
channels_
,
imgSize_
;
int
padding_
,
stride_
,
filterSize_
,
channels_
,
imgSize_
,
imgSizeY_
;
int
paddingY_
,
strideY_
,
filterSizeY_
;
int
paddingY_
,
strideY_
,
filterSizeY_
;
int
imgPixels_
,
filterPixels_
,
filterChannels_
,
outputX_
,
outputs_
;
int
imgPixels_
,
filterPixels_
,
filterChannels_
,
outputX_
,
output
Y_
,
output
s_
;
/// Following member variables are same with CudnnConvLayer.
/// Following member variables are same with CudnnConvLayer.
/// There is no explanation here.
/// There is no explanation here.
...
@@ -144,7 +144,7 @@ void ConvOperator::allocConvWorkSpace(size_t maxWorkSpace) {
...
@@ -144,7 +144,7 @@ void ConvOperator::allocConvWorkSpace(size_t maxWorkSpace) {
void
ConvOperator
::
reshape
(
int
batchSize
)
{
void
ConvOperator
::
reshape
(
int
batchSize
)
{
imageH_
=
ins_
[
0
]
->
getFrameHeight
();
imageH_
=
ins_
[
0
]
->
getFrameHeight
();
imageW_
=
ins_
[
0
]
->
getFrameWidth
();
imageW_
=
ins_
[
0
]
->
getFrameWidth
();
if
(
imageH_
==
0
)
imageH_
=
imgSize_
;
if
(
imageH_
==
0
)
imageH_
=
imgSize
Y
_
;
if
(
imageW_
==
0
)
imageW_
=
imgSize_
;
if
(
imageW_
==
0
)
imageW_
=
imgSize_
;
outputH_
=
outputSize
(
imageH_
,
filterSizeY_
,
paddingY_
,
strideY_
,
caffeMode_
);
outputH_
=
outputSize
(
imageH_
,
filterSizeY_
,
paddingY_
,
strideY_
,
caffeMode_
);
outputW_
=
outputSize
(
imageW_
,
filterSize_
,
padding_
,
stride_
,
caffeMode_
);
outputW_
=
outputSize
(
imageW_
,
filterSize_
,
padding_
,
stride_
,
caffeMode_
);
...
@@ -176,7 +176,10 @@ void ConvOperator::computeConvSizes() {
...
@@ -176,7 +176,10 @@ void ConvOperator::computeConvSizes() {
hl_create_tensor_descriptor
(
&
inputDesc_
);
hl_create_tensor_descriptor
(
&
inputDesc_
);
int
outputX
=
int
outputX
=
outputSize
(
imgSize_
,
filterSize_
,
padding_
,
stride_
,
caffeMode_
);
outputSize
(
imgSize_
,
filterSize_
,
padding_
,
stride_
,
caffeMode_
);
int
outputY
=
outputSize
(
imgSizeY_
,
filterSizeY_
,
paddingY_
,
strideY_
,
caffeMode_
);
CHECK_EQ
(
outputX
,
outputX_
);
CHECK_EQ
(
outputX
,
outputX_
);
CHECK_EQ
(
outputY
,
outputY_
);
hl_create_tensor_descriptor
(
&
outputDesc_
);
hl_create_tensor_descriptor
(
&
outputDesc_
);
hl_create_convolution_descriptor
(
&
convDesc_
,
inputDesc_
,
filterDesc_
,
hl_create_convolution_descriptor
(
&
convDesc_
,
inputDesc_
,
filterDesc_
,
paddingY_
,
padding_
,
strideY_
,
stride_
);
paddingY_
,
padding_
,
strideY_
,
stride_
);
...
@@ -208,10 +211,12 @@ void ConvOperator::getConvParams() {
...
@@ -208,10 +211,12 @@ void ConvOperator::getConvParams() {
filterPixels_
=
filterSize_
*
filterSizeY_
;
filterPixels_
=
filterSize_
*
filterSizeY_
;
channels_
=
conf
.
channels
();
channels_
=
conf
.
channels
();
imgSize_
=
conf
.
img_size
();
imgSize_
=
conf
.
img_size
();
imgPixels_
=
imgSize_
*
imgSize_
;
imgSizeY_
=
conf
.
has_img_size_y
()
?
conf
.
img_size_y
()
:
conf
.
img_size
();
imgPixels_
=
imgSize_
*
imgSizeY_
;
CHECK_EQ
(
conf
.
groups
(),
1U
);
CHECK_EQ
(
conf
.
groups
(),
1U
);
filterChannels_
=
conf
.
filter_channels
();
filterChannels_
=
conf
.
filter_channels
();
outputX_
=
conf
.
output_x
();
outputX_
=
conf
.
output_x
();
outputY_
=
conf
.
has_output_y
()
?
conf
.
output_y
()
:
conf
.
output_x
();
outputs_
=
outputX_
*
outputX_
;
outputs_
=
outputX_
*
outputX_
;
}
}
...
...
paddle/gserver/layers/ConvProjection.cpp
浏览文件 @
496d64eb
...
@@ -47,7 +47,7 @@ void ConvProjection::getConvParams() {
...
@@ -47,7 +47,7 @@ void ConvProjection::getConvParams() {
filterH_
=
conf
.
filter_size_y
();
filterH_
=
conf
.
filter_size_y
();
filterW_
=
conf
.
filter_size
();
filterW_
=
conf
.
filter_size
();
configImgH_
=
conf
.
img_size
();
configImgH_
=
conf
.
has_img_size_y
()
?
conf
.
img_size_y
()
:
conf
.
img_size
();
configImgW_
=
conf
.
img_size
();
configImgW_
=
conf
.
img_size
();
channels_
=
conf
.
channels
();
channels_
=
conf
.
channels
();
...
...
paddle/gserver/layers/DataLayer.cpp
浏览文件 @
496d64eb
...
@@ -48,8 +48,8 @@ void DataLayer::copyDataToOutput(Argument& output) {
...
@@ -48,8 +48,8 @@ void DataLayer::copyDataToOutput(Argument& output) {
output
.
ids
->
copyFrom
(
*
data_
.
ids
);
output
.
ids
->
copyFrom
(
*
data_
.
ids
);
}
}
}
}
output
.
setFrameHeight
(
data_
.
getFrameH
eight
());
output
.
setFrameHeight
(
config_
.
h
eight
());
output
.
setFrameWidth
(
data_
.
getFrameW
idth
());
output
.
setFrameWidth
(
config_
.
w
idth
());
output
.
cpuSequenceDims
=
data_
.
cpuSequenceDims
;
output
.
cpuSequenceDims
=
data_
.
cpuSequenceDims
;
output
.
sequenceStartPositions
=
data_
.
sequenceStartPositions
;
output
.
sequenceStartPositions
=
data_
.
sequenceStartPositions
;
output
.
subSequenceStartPositions
=
data_
.
subSequenceStartPositions
;
output
.
subSequenceStartPositions
=
data_
.
subSequenceStartPositions
;
...
...
paddle/gserver/layers/ExpandConvBaseLayer.cpp
浏览文件 @
496d64eb
...
@@ -30,17 +30,19 @@ bool ExpandConvBaseLayer::init(const LayerMap &layerMap,
...
@@ -30,17 +30,19 @@ bool ExpandConvBaseLayer::init(const LayerMap &layerMap,
* meaning as in conv, we need to swap channels_ and numFilters here for
* meaning as in conv, we need to swap channels_ and numFilters here for
* convTrans, and in other functions too.
* convTrans, and in other functions too.
* */
* */
int
channel
;
int
numFilters
;
/* Initialize the projection */
/* Initialize the projection */
for
(
auto
&
inputConfig
:
config_
.
inputs
())
{
for
(
auto
&
inputConfig
:
config_
.
inputs
())
{
const
ConvConfig
&
conf
=
inputConfig
.
conv_conf
();
const
ConvConfig
&
conf
=
inputConfig
.
conv_conf
();
numFilters
=
isDeconv_
?
conf
.
channels
()
:
numFilters_
;
int
numFilters
=
isDeconv_
?
conf
.
channels
()
:
numFilters_
;
subM_
.
push_back
(
numFilters
/
conf
.
groups
());
subM_
.
push_back
(
numFilters
/
conf
.
groups
());
subN_
.
push_back
(
conf
.
output_x
()
*
conf
.
output_x
());
subN_
.
push_back
(
conf
.
output_x
()
*
channel
=
isDeconv_
?
numFilters_
:
conf
.
channels
();
(
conf
.
has_output_y
()
?
conf
.
output_y
()
:
conf
.
output_x
()));
subK_
.
push_back
(
channel
*
conf
.
filter_size
()
*
conf
.
filter_size
()
/
int
channel
=
isDeconv_
?
numFilters_
:
conf
.
channels
();
conf
.
groups
());
subK_
.
push_back
(
channel
*
conf
.
filter_size
()
*
(
conf
.
has_filter_size_y
()
?
conf
.
filter_size_y
()
:
conf
.
filter_size
())
/
conf
.
groups
());
/* Consistent caffe mode for multiple input */
/* Consistent caffe mode for multiple input */
caffeMode_
=
conf
.
caffe_mode
();
caffeMode_
=
conf
.
caffe_mode
();
}
}
...
@@ -107,9 +109,9 @@ void ExpandConvBaseLayer::expandOneFrame(MatrixPtr image, size_t startIdx,
...
@@ -107,9 +109,9 @@ void ExpandConvBaseLayer::expandOneFrame(MatrixPtr image, size_t startIdx,
imgData
,
1
,
imgSizeH_
[
inIdx
]
*
imgSizeW_
[
inIdx
]
*
channel
,
false
,
imgData
,
1
,
imgSizeH_
[
inIdx
]
*
imgSizeW_
[
inIdx
]
*
channel
,
false
,
useGpu_
);
useGpu_
);
expandInput_
->
convExpand
(
*
imageTmp
,
imgSizeH_
[
inIdx
],
imgSizeW_
[
inIdx
],
expandInput_
->
convExpand
(
*
imageTmp
,
imgSizeH_
[
inIdx
],
imgSizeW_
[
inIdx
],
channel
,
filterSize_
[
inIdx
],
channel
,
filterSize
Y
_
[
inIdx
],
filterSize_
[
inIdx
],
stride_
[
inIdx
],
stride_
[
inIdx
],
filterSize_
[
inIdx
],
stride
Y
_
[
inIdx
],
stride_
[
inIdx
],
padding_
[
inIdx
],
padding_
[
inIdx
],
padding
Y
_
[
inIdx
],
padding_
[
inIdx
],
outputH_
[
inIdx
],
outputW_
[
inIdx
]);
outputH_
[
inIdx
],
outputW_
[
inIdx
]);
imageTmp
->
clear
();
imageTmp
->
clear
();
}
}
...
@@ -188,10 +190,10 @@ void ExpandConvBaseLayer::bpropActs(MatrixPtr out, MatrixPtr image,
...
@@ -188,10 +190,10 @@ void ExpandConvBaseLayer::bpropActs(MatrixPtr out, MatrixPtr image,
imgSizeH_
[
inpIdx
]
*
imgSizeW_
[
inpIdx
]
*
channel
,
false
,
imgSizeH_
[
inpIdx
]
*
imgSizeW_
[
inpIdx
]
*
channel
,
false
,
useGpu_
);
useGpu_
);
vTmp
->
convShrink
(
*
oneGradTmp
,
imgSizeH_
[
inpIdx
],
imgSizeW_
[
inpIdx
],
vTmp
->
convShrink
(
*
oneGradTmp
,
imgSizeH_
[
inpIdx
],
imgSizeW_
[
inpIdx
],
channel
,
filterSize_
[
inpIdx
],
channel
,
filterSize
Y
_
[
inpIdx
],
filterSize_
[
inpIdx
],
stride_
[
inpIdx
],
stride_
[
inpIdx
],
filterSize_
[
inpIdx
],
stride
Y
_
[
inpIdx
],
stride_
[
inpIdx
],
padding
_
[
inpIdx
],
padding
_
[
inpIdx
],
padding
Y_
[
inpIdx
],
padding_
[
inpIdx
],
outputH
_
[
inpIdx
],
output
H_
[
inpIdx
],
output
W_
[
inpIdx
],
1.0
f
,
1.0
f
);
outputW_
[
inpIdx
],
1.0
f
,
1.0
f
);
vTmp
->
clear
();
vTmp
->
clear
();
oneGradTmp
->
clear
();
oneGradTmp
->
clear
();
...
...
paddle/gserver/layers/MaxOutLayer.cpp
浏览文件 @
496d64eb
...
@@ -25,10 +25,10 @@ size_t MaxOutLayer::getSize() {
...
@@ -25,10 +25,10 @@ size_t MaxOutLayer::getSize() {
imgSizeH_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
();
imgSizeH_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
();
imgSizeW_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
();
imgSizeW_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
();
if
(
imgSizeH_
==
0
)
{
if
(
imgSizeH_
==
0
)
{
imgSizeH_
=
maxoutConf
.
img_size_y
();
imgSizeH_
=
maxoutConf
.
im
age_conf
().
im
g_size_y
();
}
}
if
(
imgSizeW_
==
0
)
{
if
(
imgSizeW_
==
0
)
{
imgSizeW_
=
maxoutConf
.
im
g_size_x
();
imgSizeW_
=
maxoutConf
.
im
age_conf
().
img_size
();
}
}
featLen_
=
imgSizeH_
*
imgSizeW_
;
featLen_
=
imgSizeH_
*
imgSizeW_
;
...
@@ -50,7 +50,7 @@ bool MaxOutLayer::init(const LayerMap& layerMap,
...
@@ -50,7 +50,7 @@ bool MaxOutLayer::init(const LayerMap& layerMap,
const
MaxOutConfig
&
conf
=
config_
.
inputs
(
0
).
maxout_conf
();
const
MaxOutConfig
&
conf
=
config_
.
inputs
(
0
).
maxout_conf
();
groups_
=
conf
.
groups
();
groups_
=
conf
.
groups
();
channels_
=
conf
.
channels
();
channels_
=
conf
.
image_conf
().
channels
();
CHECK_EQ
(
channels_
%
groups_
,
0UL
);
CHECK_EQ
(
channels_
%
groups_
,
0UL
);
outputChannels_
=
channels_
/
groups_
;
outputChannels_
=
channels_
/
groups_
;
...
...
paddle/gserver/layers/NormLayer.cpp
浏览文件 @
496d64eb
...
@@ -49,6 +49,9 @@ bool ResponseNormLayer::init(const LayerMap& layerMap,
...
@@ -49,6 +49,9 @@ bool ResponseNormLayer::init(const LayerMap& layerMap,
outputX_
=
conf
.
output_x
();
outputX_
=
conf
.
output_x
();
imgSize_
=
conf
.
img_size
();
imgSize_
=
conf
.
img_size
();
denoms_
=
NULL
;
denoms_
=
NULL
;
outputY_
=
conf
.
has_output_y
()
?
conf
.
output_y
()
:
conf
.
output_x
();
imgSizeY_
=
conf
.
has_img_size_y
()
?
conf
.
img_size_y
()
:
conf
.
img_size
();
return
true
;
return
true
;
}
}
...
...
paddle/gserver/layers/NormLayer.h
浏览文件 @
496d64eb
...
@@ -50,7 +50,7 @@ public:
...
@@ -50,7 +50,7 @@ public:
*/
*/
class
ResponseNormLayer
:
public
NormLayer
{
class
ResponseNormLayer
:
public
NormLayer
{
protected:
protected:
size_t
channels_
,
size_
,
outputX_
,
imgSize_
;
size_t
channels_
,
size_
,
outputX_
,
imgSize_
,
outputY_
,
imgSizeY_
;
float
scale_
,
pow_
;
float
scale_
,
pow_
;
MatrixPtr
denoms_
;
MatrixPtr
denoms_
;
...
...
paddle/gserver/layers/NormProjectionLayer.cpp
浏览文件 @
496d64eb
...
@@ -24,7 +24,7 @@ size_t CMRProjectionNormLayer::getSize() {
...
@@ -24,7 +24,7 @@ size_t CMRProjectionNormLayer::getSize() {
imgSizeH_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
();
imgSizeH_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
();
imgSizeW_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
();
imgSizeW_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
();
if
(
imgSizeH_
==
0
)
{
if
(
imgSizeH_
==
0
)
{
imgSizeH_
=
imgSize_
;
imgSizeH_
=
imgSize
Y
_
;
}
}
if
(
imgSizeW_
==
0
)
{
if
(
imgSizeW_
==
0
)
{
imgSizeW_
=
imgSize_
;
imgSizeW_
=
imgSize_
;
...
...
paddle/gserver/layers/SpatialPyramidPoolLayer.cpp
浏览文件 @
496d64eb
...
@@ -56,14 +56,14 @@ ProjectionConfig SpatialPyramidPoolLayer::getConfig(size_t imgSizeW,
...
@@ -56,14 +56,14 @@ ProjectionConfig SpatialPyramidPoolLayer::getConfig(size_t imgSizeW,
size_t
SpatialPyramidPoolLayer
::
getSize
()
{
size_t
SpatialPyramidPoolLayer
::
getSize
()
{
CHECK_EQ
(
inputLayers_
.
size
(),
1UL
);
CHECK_EQ
(
inputLayers_
.
size
(),
1UL
);
size_t
layerSize
=
0
;
size_t
layerSize
=
0
;
const
SppConfig
&
sppConf
=
config_
.
inputs
(
0
).
spp
_conf
();
const
ImageConfig
&
conf
=
config_
.
inputs
(
0
).
spp_conf
().
image
_conf
();
imgSizeH_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
();
imgSizeH_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameHeight
();
imgSizeW_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
();
imgSizeW_
=
inputLayers_
[
0
]
->
getOutput
().
getFrameWidth
();
if
(
imgSizeH_
==
0
)
{
if
(
imgSizeH_
==
0
)
{
imgSizeH_
=
sppConf
.
has_img_size_y
()
?
sppConf
.
img_size_y
()
:
imgSizeW_
;
imgSizeH_
=
conf
.
has_img_size_y
()
?
conf
.
img_size_y
()
:
conf
.
img_size
()
;
}
}
if
(
imgSizeW_
==
0
)
{
if
(
imgSizeW_
==
0
)
{
imgSizeW_
=
sppC
onf
.
img_size
();
imgSizeW_
=
c
onf
.
img_size
();
}
}
size_t
outputH
=
1
;
size_t
outputH
=
1
;
...
@@ -82,9 +82,10 @@ bool SpatialPyramidPoolLayer::init(const LayerMap& layerMap,
...
@@ -82,9 +82,10 @@ bool SpatialPyramidPoolLayer::init(const LayerMap& layerMap,
pyramidHeight_
=
sppConf
.
pyramid_height
();
pyramidHeight_
=
sppConf
.
pyramid_height
();
poolType_
=
sppConf
.
pool_type
();
poolType_
=
sppConf
.
pool_type
();
channels_
=
sppConf
.
channels
();
const
ImageConfig
&
imageConf
=
sppConf
.
image_conf
();
imgSizeW_
=
sppConf
.
img_size
();
channels_
=
imageConf
.
channels
();
imgSizeH_
=
sppConf
.
has_img_size_y
()
?
sppConf
.
img_size_y
()
:
imgSizeW_
;
imgSizeW_
=
imageConf
.
img_size
();
imgSizeH_
=
imageConf
.
has_img_size_y
()
?
imageConf
.
img_size_y
()
:
imgSizeW_
;
poolProjections_
.
reserve
(
pyramidHeight_
);
poolProjections_
.
reserve
(
pyramidHeight_
);
projCol_
.
reserve
(
pyramidHeight_
);
projCol_
.
reserve
(
pyramidHeight_
);
projOutput_
.
resize
(
pyramidHeight_
);
projOutput_
.
resize
(
pyramidHeight_
);
...
...
paddle/gserver/tests/img_pool_a.conf
浏览文件 @
496d64eb
...
@@ -28,7 +28,6 @@ maxpool = img_pool_layer(input=conv,
...
@@ -28,7 +28,6 @@ maxpool = img_pool_layer(input=conv,
stride_y
=
2
,
stride_y
=
2
,
padding
=
1
,
padding
=
1
,
padding_y
=
2
,
padding_y
=
2
,
img_width
=
16
,
pool_type
=
MaxPooling
(),
pool_type
=
MaxPooling
(),
)
)
avgpool
=
img_pool_layer
(
input
=
conv
,
avgpool
=
img_pool_layer
(
input
=
conv
,
...
@@ -39,7 +38,6 @@ avgpool = img_pool_layer(input=conv,
...
@@ -39,7 +38,6 @@ avgpool = img_pool_layer(input=conv,
stride_y
=
2
,
stride_y
=
2
,
padding
=
1
,
padding
=
1
,
padding_y
=
2
,
padding_y
=
2
,
img_width
=
16
,
pool_type
=
AvgPooling
(),
pool_type
=
AvgPooling
(),
)
)
...
...
paddle/gserver/tests/test_LayerGrad.cpp
浏览文件 @
496d64eb
...
@@ -194,9 +194,10 @@ TEST(Layer, BilinearInterpLayer) {
...
@@ -194,9 +194,10 @@ TEST(Layer, BilinearInterpLayer) {
LayerInputConfig
*
input
=
config
.
layerConfig
.
add_inputs
();
LayerInputConfig
*
input
=
config
.
layerConfig
.
add_inputs
();
BilinearInterpConfig
*
bilinear
=
input
->
mutable_bilinear_interp_conf
();
BilinearInterpConfig
*
bilinear
=
input
->
mutable_bilinear_interp_conf
();
bilinear
->
set_img_size_x
(
32
);
ImageConfig
*
image
=
bilinear
->
mutable_image_conf
();
bilinear
->
set_img_size_y
(
32
);
image
->
set_img_size
(
32
);
bilinear
->
set_num_channels
(
4
);
image
->
set_img_size_y
(
32
);
image
->
set_channels
(
4
);
for
(
auto
useGpu
:
{
false
,
true
})
{
for
(
auto
useGpu
:
{
false
,
true
})
{
for
(
auto
outSize
:
{
32
,
64
})
{
for
(
auto
outSize
:
{
32
,
64
})
{
...
@@ -314,7 +315,7 @@ void testConvLayer(const string& type, bool trans, bool useGpu) {
...
@@ -314,7 +315,7 @@ void testConvLayer(const string& type, bool trans, bool useGpu) {
config
.
layerConfig
.
set_partial_sum
(
1
);
config
.
layerConfig
.
set_partial_sum
(
1
);
config
.
layerConfig
.
set_shared_biases
(
true
);
config
.
layerConfig
.
set_shared_biases
(
true
);
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_0"
,
768
,
288
});
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_0"
,
384
,
288
});
LayerInputConfig
*
input
=
config
.
layerConfig
.
add_inputs
();
LayerInputConfig
*
input
=
config
.
layerConfig
.
add_inputs
();
ConvConfig
*
conv
=
input
->
mutable_conv_conf
();
ConvConfig
*
conv
=
input
->
mutable_conv_conf
();
conv
->
set_filter_size
(
2
);
conv
->
set_filter_size
(
2
);
...
@@ -327,10 +328,14 @@ void testConvLayer(const string& type, bool trans, bool useGpu) {
...
@@ -327,10 +328,14 @@ void testConvLayer(const string& type, bool trans, bool useGpu) {
conv
->
set_groups
(
1
);
conv
->
set_groups
(
1
);
conv
->
set_filter_channels
(
conv
->
channels
()
/
conv
->
groups
());
conv
->
set_filter_channels
(
conv
->
channels
()
/
conv
->
groups
());
conv
->
set_img_size
(
16
);
conv
->
set_img_size
(
16
);
conv
->
set_img_size_y
(
8
);
conv
->
set_output_x
(
outputSize
(
conv
->
img_size
(),
conv
->
filter_size
(),
conv
->
set_output_x
(
outputSize
(
conv
->
img_size
(),
conv
->
filter_size
(),
conv
->
padding
(),
conv
->
stride
(),
conv
->
padding
(),
conv
->
stride
(),
/* caffeMode */
true
));
/* caffeMode */
true
));
config
.
layerConfig
.
set_size
(
conv
->
output_x
()
*
conv
->
output_x
()
*
conv
->
set_output_y
(
outputSize
(
conv
->
img_size_y
(),
conv
->
filter_size_y
(),
conv
->
padding_y
(),
conv
->
stride_y
(),
/* caffeMode */
true
));
config
.
layerConfig
.
set_size
(
conv
->
output_x
()
*
conv
->
output_y
()
*
config
.
layerConfig
.
num_filters
());
config
.
layerConfig
.
num_filters
());
testLayerGrad
(
config
,
"conv"
,
100
,
trans
,
useGpu
);
testLayerGrad
(
config
,
"conv"
,
100
,
trans
,
useGpu
);
...
@@ -427,10 +432,11 @@ TEST(Layer, maxoutLayer) {
...
@@ -427,10 +432,11 @@ TEST(Layer, maxoutLayer) {
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_0"
,
4096
,
0
});
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_0"
,
4096
,
0
});
LayerInputConfig
*
input
=
config
.
layerConfig
.
add_inputs
();
LayerInputConfig
*
input
=
config
.
layerConfig
.
add_inputs
();
MaxOutConfig
*
maxout
=
input
->
mutable_maxout_conf
();
MaxOutConfig
*
maxout
=
input
->
mutable_maxout_conf
();
ImageConfig
*
image
=
maxout
->
mutable_image_conf
();
maxout
->
set_img_size_x
(
32
);
image
->
set_img_size
(
32
);
maxout
->
set_img_size_y
(
32
);
image
->
set_img_size_y
(
32
);
maxout
->
set_channels
(
4
);
image
->
set_channels
(
4
);
maxout
->
set_groups
(
2
);
maxout
->
set_groups
(
2
);
for
(
auto
useGpu
:
{
false
,
true
})
{
for
(
auto
useGpu
:
{
false
,
true
})
{
...
@@ -902,7 +908,7 @@ void testNormLayer(const string& normType, bool trans, bool useGpu) {
...
@@ -902,7 +908,7 @@ void testNormLayer(const string& normType, bool trans, bool useGpu) {
config
.
layerConfig
.
set_type
(
"norm"
);
config
.
layerConfig
.
set_type
(
"norm"
);
config
.
layerConfig
.
set_active_type
(
"relu"
);
config
.
layerConfig
.
set_active_type
(
"relu"
);
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_0"
,
3136
,
0
});
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_0"
,
1568
,
0
});
LayerInputConfig
*
input
=
config
.
layerConfig
.
add_inputs
();
LayerInputConfig
*
input
=
config
.
layerConfig
.
add_inputs
();
NormConfig
*
norm
=
input
->
mutable_norm_conf
();
NormConfig
*
norm
=
input
->
mutable_norm_conf
();
norm
->
set_norm_type
(
normType
);
norm
->
set_norm_type
(
normType
);
...
@@ -912,7 +918,9 @@ void testNormLayer(const string& normType, bool trans, bool useGpu) {
...
@@ -912,7 +918,9 @@ void testNormLayer(const string& normType, bool trans, bool useGpu) {
norm
->
set_pow
(
0.75
);
norm
->
set_pow
(
0.75
);
norm
->
set_blocked
(
0
);
norm
->
set_blocked
(
0
);
norm
->
set_img_size
(
14
);
norm
->
set_img_size
(
14
);
norm
->
set_img_size_y
(
7
);
norm
->
set_output_x
(
norm
->
img_size
());
norm
->
set_output_x
(
norm
->
img_size
());
norm
->
set_output_y
(
norm
->
img_size_y
());
if
(
norm
->
norm_type
()
==
"cmrnorm"
||
if
(
norm
->
norm_type
()
==
"cmrnorm"
||
norm
->
norm_type
()
==
"cmrnorm-projection"
)
{
norm
->
norm_type
()
==
"cmrnorm-projection"
)
{
norm
->
set_scale
(
norm
->
scale
()
/
norm
->
size
());
norm
->
set_scale
(
norm
->
scale
()
/
norm
->
size
());
...
@@ -920,7 +928,7 @@ void testNormLayer(const string& normType, bool trans, bool useGpu) {
...
@@ -920,7 +928,7 @@ void testNormLayer(const string& normType, bool trans, bool useGpu) {
norm
->
set_scale
(
norm
->
scale
()
/
(
norm
->
size
()
*
norm
->
size
()));
norm
->
set_scale
(
norm
->
scale
()
/
(
norm
->
size
()
*
norm
->
size
()));
}
}
config
.
layerConfig
.
set_size
(
norm
->
output_x
()
*
norm
->
output_
x
()
*
config
.
layerConfig
.
set_size
(
norm
->
output_x
()
*
norm
->
output_
y
()
*
norm
->
channels
());
norm
->
channels
());
config
.
biasSize
=
0
;
config
.
biasSize
=
0
;
...
@@ -1018,11 +1026,12 @@ void testSppLayer(const string& poolType, const int pyramidHeight, bool trans,
...
@@ -1018,11 +1026,12 @@ void testSppLayer(const string& poolType, const int pyramidHeight, bool trans,
SppConfig
*
sppConfig
=
input
->
mutable_spp_conf
();
SppConfig
*
sppConfig
=
input
->
mutable_spp_conf
();
sppConfig
->
set_pool_type
(
poolType
);
sppConfig
->
set_pool_type
(
poolType
);
sppConfig
->
set_pyramid_height
(
pyramidHeight
);
sppConfig
->
set_pyramid_height
(
pyramidHeight
);
sppConfig
->
set_channels
(
16
);
ImageConfig
*
imageConfig
=
sppConfig
->
mutable_image_conf
();
sppConfig
->
set_img_size
(
10
);
imageConfig
->
set_channels
(
16
);
sppConfig
->
set_img_size_y
(
20
);
imageConfig
->
set_img_size
(
10
);
imageConfig
->
set_img_size_y
(
20
);
int
outputSize
=
(
std
::
pow
(
4
,
sppConfig
->
pyramid_height
())
-
1
)
/
(
4
-
1
);
int
outputSize
=
(
std
::
pow
(
4
,
sppConfig
->
pyramid_height
())
-
1
)
/
(
4
-
1
);
config
.
layerConfig
.
set_size
(
outputSize
*
spp
Config
->
channels
());
config
.
layerConfig
.
set_size
(
outputSize
*
image
Config
->
channels
());
testLayerGrad
(
config
,
"spp"
,
100
,
trans
,
useGpu
);
testLayerGrad
(
config
,
"spp"
,
100
,
trans
,
useGpu
);
}
}
...
@@ -1328,12 +1337,13 @@ void testBatchNormLayer(const string& type, bool trans, bool useGpu) {
...
@@ -1328,12 +1337,13 @@ void testBatchNormLayer(const string& type, bool trans, bool useGpu) {
TestConfig
config
;
TestConfig
config
;
const
int
CHANNELS
=
10
;
const
int
CHANNELS
=
10
;
const
int
IMG_SIZE
=
16
;
const
int
IMG_SIZE
=
16
;
const
int
IMG_SIZE_Y
=
8
;
size_t
size
=
CHANNELS
*
IMG_SIZE
*
IMG_SIZE_Y
;
config
.
layerConfig
.
set_type
(
type
);
config
.
layerConfig
.
set_type
(
type
);
config
.
layerConfig
.
set_size
(
CHANNELS
*
IMG_SIZE
*
IMG_SIZE
);
config
.
layerConfig
.
set_size
(
size
);
config
.
layerConfig
.
set_active_type
(
"sigmoid"
);
config
.
layerConfig
.
set_active_type
(
"sigmoid"
);
config
.
biasSize
=
CHANNELS
;
config
.
biasSize
=
CHANNELS
;
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_0"
,
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_0"
,
/* dim= */
size
,
/* dim= */
IMG_SIZE
*
IMG_SIZE
*
CHANNELS
,
/* paraSize= */
CHANNELS
});
/* paraSize= */
CHANNELS
});
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_1_running_mean"
,
1
,
CHANNELS
});
config
.
inputDefs
.
push_back
({
INPUT_DATA
,
"layer_1_running_mean"
,
1
,
CHANNELS
});
...
@@ -1348,6 +1358,7 @@ void testBatchNormLayer(const string& type, bool trans, bool useGpu) {
...
@@ -1348,6 +1358,7 @@ void testBatchNormLayer(const string& type, bool trans, bool useGpu) {
ImageConfig
*
img_conf
=
input
->
mutable_image_conf
();
ImageConfig
*
img_conf
=
input
->
mutable_image_conf
();
img_conf
->
set_channels
(
CHANNELS
);
img_conf
->
set_channels
(
CHANNELS
);
img_conf
->
set_img_size
(
IMG_SIZE
);
img_conf
->
set_img_size
(
IMG_SIZE
);
img_conf
->
set_img_size_y
(
IMG_SIZE_Y
);
testLayerGrad
(
config
,
"batch_norm"
,
64
,
/* trans= */
trans
,
useGpu
,
testLayerGrad
(
config
,
"batch_norm"
,
64
,
/* trans= */
trans
,
useGpu
,
/* useWeight */
true
);
/* useWeight */
true
);
...
@@ -1370,6 +1381,7 @@ TEST(Operator, conv) {
...
@@ -1370,6 +1381,7 @@ TEST(Operator, conv) {
const
int
FILTER_SIZE_Y
=
3
;
const
int
FILTER_SIZE_Y
=
3
;
const
int
CHANNELS
=
3
;
const
int
CHANNELS
=
3
;
const
int
IMAGE_SIZE
=
16
;
const
int
IMAGE_SIZE
=
16
;
const
int
IMAGE_SIZE_Y
=
8
;
OperatorConfig
&
operatorConf
=
*
config
.
layerConfig
.
add_operator_confs
();
OperatorConfig
&
operatorConf
=
*
config
.
layerConfig
.
add_operator_confs
();
operatorConf
.
set_type
(
"conv"
);
operatorConf
.
set_type
(
"conv"
);
ConvConfig
*
conv
=
operatorConf
.
mutable_conv_conf
();
ConvConfig
*
conv
=
operatorConf
.
mutable_conv_conf
();
...
@@ -1384,17 +1396,18 @@ TEST(Operator, conv) {
...
@@ -1384,17 +1396,18 @@ TEST(Operator, conv) {
conv
->
set_groups
(
1
);
conv
->
set_groups
(
1
);
conv
->
set_filter_channels
(
conv
->
channels
()
/
conv
->
groups
());
conv
->
set_filter_channels
(
conv
->
channels
()
/
conv
->
groups
());
conv
->
set_img_size
(
IMAGE_SIZE
);
conv
->
set_img_size
(
IMAGE_SIZE
);
int
output_x
=
conv
->
set_img_size_y
(
IMAGE_SIZE_Y
);
outputSize
(
conv
->
img_size
(),
conv
->
filter_size
(),
conv
->
padding
(),
conv
->
set_output_x
(
outputSize
(
conv
->
img_size
(),
conv
->
filter_size
(),
conv
->
stride
(),
/* caffeMode */
true
);
conv
->
padding
(),
conv
->
stride
(),
conv
->
set_output_x
(
output_x
);
/* caffeMode */
true
));
config
.
layerConfig
.
set_size
(
output_x
*
output_x
*
conv
->
set_output_y
(
outputSize
(
conv
->
img_size_y
(),
conv
->
filter_size_y
(),
config
.
layerConfig
.
num_filters
());
conv
->
padding_y
(),
conv
->
stride_y
(),
config
.
layerConfig
.
set_size
(
conv
->
output_x
()
*
conv
->
output_x
()
*
/* caffeMode */
true
));
config
.
layerConfig
.
set_size
(
conv
->
output_x
()
*
conv
->
output_y
()
*
NUM_FILTERS
);
NUM_FILTERS
);
config
.
inputDefs
.
push_back
(
config
.
inputDefs
.
push_back
(
{
INPUT_DATA
,
"layer_0"
,
IMAGE_SIZE
*
IMAGE_SIZE
*
CHANNELS
,
0
});
{
INPUT_DATA
,
"layer_0"
,
IMAGE_SIZE
*
IMAGE_SIZE
_Y
*
CHANNELS
,
0
});
config
.
inputDefs
.
push_back
(
config
.
inputDefs
.
push_back
(
{
INPUT_DATA
,
"layer_1"
,
{
INPUT_DATA
,
"layer_1"
,
FILTER_SIZE
*
FILTER_SIZE_Y
*
CHANNELS
*
NUM_FILTERS
,
0
});
FILTER_SIZE
*
FILTER_SIZE_Y
*
CHANNELS
*
NUM_FILTERS
,
0
});
...
...
paddle/parameter/Argument.cpp
浏览文件 @
496d64eb
...
@@ -203,6 +203,8 @@ void Argument::resizeAndCopyFrom(const Argument& src, bool useGpu,
...
@@ -203,6 +203,8 @@ void Argument::resizeAndCopyFrom(const Argument& src, bool useGpu,
}
}
resizeAndCopy
(
udp
,
src
.
udp
,
useGpu
,
stream
);
resizeAndCopy
(
udp
,
src
.
udp
,
useGpu
,
stream
);
resizeAndCopy
(
strs
,
src
.
strs
,
useGpu
,
stream
);
resizeAndCopy
(
strs
,
src
.
strs
,
useGpu
,
stream
);
frameWidth
=
src
.
frameWidth
;
frameHeight
=
src
.
frameHeight
;
}
}
int32_t
Argument
::
resizeAndCopyFrom
(
const
Argument
&
src
,
int32_t
startSeq
,
int32_t
Argument
::
resizeAndCopyFrom
(
const
Argument
&
src
,
int32_t
startSeq
,
...
...
paddle/trainer/tests/test_config.conf
浏览文件 @
496d64eb
...
@@ -59,7 +59,6 @@ pool = img_pool_layer(input=fc2,
...
@@ -59,7 +59,6 @@ pool = img_pool_layer(input=fc2,
padding_y
=
2
,
padding_y
=
2
,
stride
=
2
,
stride
=
2
,
stride_y
=
3
,
stride_y
=
3
,
img_width
=
3
,
pool_type
=
CudnnAvgPooling
())
pool_type
=
CudnnAvgPooling
())
concat
=
concat_layer
(
input
=[
fc3
,
fc4
])
concat
=
concat_layer
(
input
=[
fc3
,
fc4
])
...
...
proto/ModelConfig.proto.m4
浏览文件 @
496d64eb
...
@@ -76,6 +76,12 @@ message ConvConfig {
...
@@ -76,6 +76,12 @@ message ConvConfig {
required uint32 filter_size_y = 10;
required uint32 filter_size_y = 10;
required uint32 padding_y = 11;
required uint32 padding_y = 11;
required uint32 stride_y = 12;
required uint32 stride_y = 12;
// if not set, use output_x
optional uint32 output_y = 13 [default = 0];
// if not set, use img_size
optional uint32 img_size_y = 14 [default = 0];
}
}
message PoolConfig {
message PoolConfig {
...
@@ -121,11 +127,9 @@ message PoolConfig {
...
@@ -121,11 +127,9 @@ message PoolConfig {
}
}
message SppConfig {
message SppConfig {
required string pool_type = 1;
required ImageConfig image_conf = 1;
required uint32 pyramid_height = 2;
required string pool_type = 2;
required uint32 channels = 3;
required uint32 pyramid_height = 3;
required uint32 img_size = 4;
optional uint32 img_size_y = 5;
}
}
message NormConfig {
message NormConfig {
...
@@ -155,6 +159,12 @@ message NormConfig {
...
@@ -155,6 +159,12 @@ message NormConfig {
// fixed window: shared a fixed window for each value
// fixed window: shared a fixed window for each value
// sliding window: have a different window for each value
// sliding window: have a different window for each value
optional bool blocked = 8;
optional bool blocked = 8;
// if not set, use output_x
optional uint32 output_y = 9 [default = 0];
// if not set, use img_size
optional uint32 img_size_y = 10 [default = 0];
}
}
message BlockExpandConfig {
message BlockExpandConfig {
...
@@ -179,12 +189,8 @@ message BlockExpandConfig {
...
@@ -179,12 +189,8 @@ message BlockExpandConfig {
}
}
message MaxOutConfig {
message MaxOutConfig {
required
uint32 channels
= 1;
required
ImageConfig image_conf
= 1;
required uint32 groups = 2;
required uint32 groups = 2;
// The size of input feature map.
required uint32 img_size_x = 3;
required uint32 img_size_y = 4;
}
}
message ProjectionConfig {
message ProjectionConfig {
...
@@ -225,12 +231,10 @@ message OperatorConfig {
...
@@ -225,12 +231,10 @@ message OperatorConfig {
message BilinearInterpConfig {
message BilinearInterpConfig {
// The size of input feature map.
// The size of input feature map.
optional uint32 img_size_x = 1;
required ImageConfig image_conf = 1;
optional uint32 img_size_y = 2;
// The size of output feature map.
// The size of output feature map.
required uint32 out_size_x = 3;
required uint32 out_size_x = 2;
required uint32 out_size_y = 4;
required uint32 out_size_y = 3;
required uint32 num_channels = 5;
}
}
message ImageConfig {
message ImageConfig {
...
@@ -240,6 +244,7 @@ message ImageConfig {
...
@@ -240,6 +244,7 @@ message ImageConfig {
// The size of input feature map.
// The size of input feature map.
required uint32 img_size = 8;
required uint32 img_size = 8;
required uint32 img_size_y = 9;
}
}
message LayerInputConfig {
message LayerInputConfig {
...
@@ -412,7 +417,10 @@ sinclude(`ModelConfigLayer.proto.m4')
...
@@ -412,7 +417,10 @@ sinclude(`ModelConfigLayer.proto.m4')
//
string
type
is
used
for
flexibility
:
different
types
can
be
converted
//
string
type
is
used
for
flexibility
:
different
types
can
be
converted
//
to
string
and
reinterpreted
in
the
user
's own layer implementation.
//
to
string
and
reinterpreted
in
the
user
's own layer implementation.
optional string user_arg = 49;
optional string user_arg = 49;
// to indicate rectangle image data
optional uint64 height = 50;
optional uint64 width = 51;
}
}
message EvaluatorConfig {
message EvaluatorConfig {
...
...
python/paddle/trainer/config_parser.py
浏览文件 @
496d64eb
此差异已折叠。
点击以展开。
python/paddle/trainer_config_helpers/layers.py
浏览文件 @
496d64eb
...
@@ -763,7 +763,7 @@ def mixed_layer(size=0,
...
@@ -763,7 +763,7 @@ def mixed_layer(size=0,
@
layer_support
()
@
layer_support
()
def
data_layer
(
name
,
size
,
layer_attr
=
None
):
def
data_layer
(
name
,
size
,
height
=
None
,
width
=
None
,
layer_attr
=
None
):
"""
"""
Define DataLayer For NeuralNetwork.
Define DataLayer For NeuralNetwork.
...
@@ -778,6 +778,10 @@ def data_layer(name, size, layer_attr=None):
...
@@ -778,6 +778,10 @@ def data_layer(name, size, layer_attr=None):
:type name: basestring
:type name: basestring
:param size: Size of this data layer.
:param size: Size of this data layer.
:type size: int
:type size: int
:param height: Height of this data layer, used for image
:type size: int|None
:param width: Width of this data layer, used for image
:type size: int|None
:param layer_attr: Extra Layer Attribute.
:param layer_attr: Extra Layer Attribute.
:type layer_attr: ExtraLayerAttribute.
:type layer_attr: ExtraLayerAttribute.
:return: LayerOutput object.
:return: LayerOutput object.
...
@@ -787,6 +791,8 @@ def data_layer(name, size, layer_attr=None):
...
@@ -787,6 +791,8 @@ def data_layer(name, size, layer_attr=None):
type
=
LayerType
.
DATA
,
type
=
LayerType
.
DATA
,
name
=
name
,
name
=
name
,
size
=
size
,
size
=
size
,
height
=
height
,
width
=
width
,
**
ExtraLayerAttribute
.
to_kwargs
(
layer_attr
))
**
ExtraLayerAttribute
.
to_kwargs
(
layer_attr
))
return
LayerOutput
(
name
,
LayerType
.
DATA
,
size
=
size
)
return
LayerOutput
(
name
,
LayerType
.
DATA
,
size
=
size
)
...
@@ -1480,7 +1486,7 @@ def bilinear_interp_layer(input,
...
@@ -1480,7 +1486,7 @@ def bilinear_interp_layer(input,
bilinear_interp
=
BilinearInterp
(
bilinear_interp
=
BilinearInterp
(
out_size_x
=
out_size_x
,
out_size_x
=
out_size_x
,
out_size_y
=
out_size_y
,
out_size_y
=
out_size_y
,
num_
channels
=
num_channels
)),
channels
=
num_channels
)),
type
=
LayerType
.
BILINEAR_INTERP_LAYER
,
type
=
LayerType
.
BILINEAR_INTERP_LAYER
,
**
ExtraLayerAttribute
.
to_kwargs
(
layer_attr
))
**
ExtraLayerAttribute
.
to_kwargs
(
layer_attr
))
return
LayerOutput
(
return
LayerOutput
(
...
@@ -1908,8 +1914,7 @@ def img_pool_layer(input,
...
@@ -1908,8 +1914,7 @@ def img_pool_layer(input,
layer_attr
=
None
,
layer_attr
=
None
,
pool_size_y
=
None
,
pool_size_y
=
None
,
stride_y
=
None
,
stride_y
=
None
,
padding_y
=
None
,
padding_y
=
None
):
img_width
=
None
):
"""
"""
Image pooling Layer.
Image pooling Layer.
...
@@ -1940,9 +1945,6 @@ def img_pool_layer(input,
...
@@ -1940,9 +1945,6 @@ def img_pool_layer(input,
:type stride_y: int|None
:type stride_y: int|None
:param layer_attr: Extra Layer attribute.
:param layer_attr: Extra Layer attribute.
:type layer_attr: ExtraLayerAttribute
:type layer_attr: ExtraLayerAttribute
:param img_width: the width of input feature map. If it is None, the input feature
map should be square.
:type img_width: int|None
:return: LayerOutput object.
:return: LayerOutput object.
:rtype: LayerOutput
:rtype: LayerOutput
"""
"""
...
@@ -1978,8 +1980,7 @@ def img_pool_layer(input,
...
@@ -1978,8 +1980,7 @@ def img_pool_layer(input,
padding
=
padding
,
padding
=
padding
,
size_y
=
pool_size_y
,
size_y
=
pool_size_y
,
stride_y
=
stride_y
,
stride_y
=
stride_y
,
padding_y
=
padding_y
,
padding_y
=
padding_y
))
img_width
=
img_width
))
],
],
**
ExtraLayerAttribute
.
to_kwargs
(
layer_attr
))
**
ExtraLayerAttribute
.
to_kwargs
(
layer_attr
))
return
LayerOutput
(
return
LayerOutput
(
...
@@ -1997,7 +1998,6 @@ def spp_layer(input,
...
@@ -1997,7 +1998,6 @@ def spp_layer(input,
num_channels
=
None
,
num_channels
=
None
,
pool_type
=
None
,
pool_type
=
None
,
pyramid_height
=
None
,
pyramid_height
=
None
,
img_width
=
None
,
layer_attr
=
None
):
layer_attr
=
None
):
"""
"""
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition.
Spatial Pyramid Pooling in Deep Convolutional Networks for Visual Recognition.
...
@@ -2014,9 +2014,6 @@ def spp_layer(input,
...
@@ -2014,9 +2014,6 @@ def spp_layer(input,
:type scale: BasePoolingType
:type scale: BasePoolingType
:param pyramid_height: pyramid height.
:param pyramid_height: pyramid height.
:type pyramid_height: int
:type pyramid_height: int
:param img_width: the width of input feature map. If it is None, the input feature
map should be square.
:type img_width: int|None
:param layer_attr: Extra Layer Attribute.
:param layer_attr: Extra Layer Attribute.
:type layer_attr: ExtraLayerAttribute
:type layer_attr: ExtraLayerAttribute
:return: LayerOutput object.
:return: LayerOutput object.
...
@@ -2043,8 +2040,7 @@ def spp_layer(input,
...
@@ -2043,8 +2040,7 @@ def spp_layer(input,
spp
=
SpatialPyramidPool
(
spp
=
SpatialPyramidPool
(
pool_type
=
type_name
,
pool_type
=
type_name
,
channels
=
num_channels
,
channels
=
num_channels
,
pyramid_height
=
pyramid_height
,
pyramid_height
=
pyramid_height
)),
img_width
=
img_width
)),
**
ExtraLayerAttribute
.
to_kwargs
(
layer_attr
))
**
ExtraLayerAttribute
.
to_kwargs
(
layer_attr
))
return
LayerOutput
(
return
LayerOutput
(
name
,
name
,
...
...
python/paddle/trainer_config_helpers/tests/configs/protostr/img_layers.protostr
浏览文件 @
496d64eb
...
@@ -26,11 +26,15 @@ layers {
...
@@ -26,11 +26,15 @@ layers {
filter_size_y: 32
filter_size_y: 32
padding_y: 1
padding_y: 1
stride_y: 1
stride_y: 1
output_y: 227
img_size_y: 256
}
}
}
}
bias_parameter_name: "___conv_0__.wbias"
bias_parameter_name: "___conv_0__.wbias"
num_filters: 64
num_filters: 64
shared_biases: true
shared_biases: true
height: 227
width: 227
}
}
layers {
layers {
name: "__batch_norm_0__"
name: "__batch_norm_0__"
...
@@ -43,6 +47,7 @@ layers {
...
@@ -43,6 +47,7 @@ layers {
image_conf {
image_conf {
channels: 64
channels: 64
img_size: 227
img_size: 227
img_size_y: 227
}
}
}
}
inputs {
inputs {
...
@@ -55,6 +60,8 @@ layers {
...
@@ -55,6 +60,8 @@ layers {
}
}
bias_parameter_name: "___batch_norm_0__.wbias"
bias_parameter_name: "___batch_norm_0__.wbias"
moving_average_fraction: 0.9
moving_average_fraction: 0.9
height: 227
width: 227
}
}
layers {
layers {
name: "__crmnorm_0__"
name: "__crmnorm_0__"
...
@@ -72,8 +79,12 @@ layers {
...
@@ -72,8 +79,12 @@ layers {
output_x: 227
output_x: 227
img_size: 227
img_size: 227
blocked: false
blocked: false
output_y: 227
img_size_y: 227
}
}
}
}
height: 227
width: 227
}
}
layers {
layers {
name: "__pool_0__"
name: "__pool_0__"
...
@@ -97,6 +108,8 @@ layers {
...
@@ -97,6 +108,8 @@ layers {
padding_y: 0
padding_y: 0
}
}
}
}
height: 196
width: 196
}
}
parameters {
parameters {
name: "___conv_0__.w0"
name: "___conv_0__.w0"
...
...
python/paddle/trainer_config_helpers/tests/configs/protostr/img_trans_layers.protostr
浏览文件 @
496d64eb
...
@@ -26,6 +26,8 @@ layers {
...
@@ -26,6 +26,8 @@ layers {
filter_size_y: 32
filter_size_y: 32
padding_y: 1
padding_y: 1
stride_y: 1
stride_y: 1
output_y: 227
img_size_y: 198
}
}
}
}
bias_parameter_name: "___conv_0__.wbias"
bias_parameter_name: "___conv_0__.wbias"
...
@@ -43,6 +45,7 @@ layers {
...
@@ -43,6 +45,7 @@ layers {
image_conf {
image_conf {
channels: 64
channels: 64
img_size: 256
img_size: 256
img_size_y: 256
}
}
}
}
inputs {
inputs {
...
@@ -55,6 +58,8 @@ layers {
...
@@ -55,6 +58,8 @@ layers {
}
}
bias_parameter_name: "___batch_norm_0__.wbias"
bias_parameter_name: "___batch_norm_0__.wbias"
moving_average_fraction: 0.9
moving_average_fraction: 0.9
height: 256
width: 256
}
}
layers {
layers {
name: "__crmnorm_0__"
name: "__crmnorm_0__"
...
@@ -72,8 +77,12 @@ layers {
...
@@ -72,8 +77,12 @@ layers {
output_x: 256
output_x: 256
img_size: 256
img_size: 256
blocked: false
blocked: false
output_y: 256
img_size_y: 256
}
}
}
}
height: 256
width: 256
}
}
layers {
layers {
name: "__pool_0__"
name: "__pool_0__"
...
@@ -97,6 +106,8 @@ layers {
...
@@ -97,6 +106,8 @@ layers {
padding_y: 0
padding_y: 0
}
}
}
}
height: 225
width: 225
}
}
parameters {
parameters {
name: "___conv_0__.w0"
name: "___conv_0__.w0"
...
...
python/paddle/trainer_config_helpers/tests/configs/protostr/projections.protostr
浏览文件 @
496d64eb
...
@@ -177,6 +177,8 @@ layers {
...
@@ -177,6 +177,8 @@ layers {
filter_size_y: 3
filter_size_y: 3
padding_y: 0
padding_y: 0
stride_y: 1
stride_y: 1
output_y: 30
img_size_y: 32
}
}
num_filters: 64
num_filters: 64
}
}
...
...
python/paddle/trainer_config_helpers/tests/configs/protostr/test_bilinear_interp.protostr
浏览文件 @
496d64eb
...
@@ -26,11 +26,15 @@ layers {
...
@@ -26,11 +26,15 @@ layers {
filter_size_y: 3
filter_size_y: 3
padding_y: 1
padding_y: 1
stride_y: 1
stride_y: 1
output_y: 48
img_size_y: 48
}
}
}
}
bias_parameter_name: "___conv_0__.wbias"
bias_parameter_name: "___conv_0__.wbias"
num_filters: 16
num_filters: 16
shared_biases: true
shared_biases: true
height: 48
width: 48
}
}
layers {
layers {
name: "__bilinear_interp_layer_0__"
name: "__bilinear_interp_layer_0__"
...
@@ -40,11 +44,17 @@ layers {
...
@@ -40,11 +44,17 @@ layers {
inputs {
inputs {
input_layer_name: "__conv_0__"
input_layer_name: "__conv_0__"
bilinear_interp_conf {
bilinear_interp_conf {
image_conf {
channels: 16
img_size: 48
img_size_y: 48
}
out_size_x: 64
out_size_x: 64
out_size_y: 64
out_size_y: 64
num_channels: 16
}
}
}
}
height: 64
width: 64
}
}
layers {
layers {
name: "__pool_0__"
name: "__pool_0__"
...
@@ -55,19 +65,21 @@ layers {
...
@@ -55,19 +65,21 @@ layers {
input_layer_name: "__bilinear_interp_layer_0__"
input_layer_name: "__bilinear_interp_layer_0__"
pool_conf {
pool_conf {
pool_type: "max-projection"
pool_type: "max-projection"
channels:
4
channels:
16
size_x: 2
size_x: 2
stride: 2
stride: 2
output_x:
64
output_x:
32
img_size:
128
img_size:
64
padding: 0
padding: 0
size_y: 2
size_y: 2
stride_y: 2
stride_y: 2
output_y:
64
output_y:
32
img_size_y:
128
img_size_y:
64
padding_y: 0
padding_y: 0
}
}
}
}
height: 32
width: 32
}
}
layers {
layers {
name: "__fc_layer_0__"
name: "__fc_layer_0__"
...
@@ -78,6 +90,8 @@ layers {
...
@@ -78,6 +90,8 @@ layers {
input_layer_name: "__pool_0__"
input_layer_name: "__pool_0__"
input_parameter_name: "___fc_layer_0__.w0"
input_parameter_name: "___fc_layer_0__.w0"
}
}
height: 32
width: 32
}
}
parameters {
parameters {
name: "___conv_0__.w0"
name: "___conv_0__.w0"
...
...
python/paddle/trainer_config_helpers/tests/configs/protostr/test_maxout.protostr
浏览文件 @
496d64eb
...
@@ -4,6 +4,8 @@ layers {
...
@@ -4,6 +4,8 @@ layers {
type: "data"
type: "data"
size: 2304
size: 2304
active_type: ""
active_type: ""
height: 48
width: 48
}
}
layers {
layers {
name: "__conv_0__"
name: "__conv_0__"
...
@@ -26,11 +28,15 @@ layers {
...
@@ -26,11 +28,15 @@ layers {
filter_size_y: 3
filter_size_y: 3
padding_y: 1
padding_y: 1
stride_y: 1
stride_y: 1
output_y: 48
img_size_y: 48
}
}
}
}
bias_parameter_name: "___conv_0__.wbias"
bias_parameter_name: "___conv_0__.wbias"
num_filters: 16
num_filters: 16
shared_biases: true
shared_biases: true
height: 48
width: 48
}
}
layers {
layers {
name: "__maxout_layer_0__"
name: "__maxout_layer_0__"
...
@@ -40,12 +46,16 @@ layers {
...
@@ -40,12 +46,16 @@ layers {
inputs {
inputs {
input_layer_name: "__conv_0__"
input_layer_name: "__conv_0__"
maxout_conf {
maxout_conf {
channels: 16
image_conf {
channels: 16
img_size: 48
img_size_y: 48
}
groups: 2
groups: 2
img_size_x: 0
img_size_y: 0
}
}
}
}
height: 48
width: 48
}
}
layers {
layers {
name: "__pool_0__"
name: "__pool_0__"
...
@@ -69,48 +79,58 @@ layers {
...
@@ -69,48 +79,58 @@ layers {
padding_y: 0
padding_y: 0
}
}
}
}
height: 24
width: 24
}
}
layers {
layers {
name: "__conv_1__"
name: "__conv_1__"
type: "exconv"
type: "exconv"
size:
18432
size:
73728
active_type: ""
active_type: ""
inputs {
inputs {
input_layer_name: "__pool_0__"
input_layer_name: "__pool_0__"
input_parameter_name: "___conv_1__.w0"
input_parameter_name: "___conv_1__.w0"
conv_conf {
conv_conf {
filter_size: 3
filter_size: 3
channels:
32
channels:
8
stride: 1
stride: 1
padding: 1
padding: 1
groups: 1
groups: 1
filter_channels:
32
filter_channels:
8
output_x:
12
output_x:
24
img_size:
12
img_size:
24
caffe_mode: true
caffe_mode: true
filter_size_y: 3
filter_size_y: 3
padding_y: 1
padding_y: 1
stride_y: 1
stride_y: 1
output_y: 24
img_size_y: 24
}
}
}
}
bias_parameter_name: "___conv_1__.wbias"
bias_parameter_name: "___conv_1__.wbias"
num_filters: 128
num_filters: 128
shared_biases: true
shared_biases: true
height: 24
width: 24
}
}
layers {
layers {
name: "__maxout_layer_1__"
name: "__maxout_layer_1__"
type: "maxout"
type: "maxout"
size:
9216
size:
18432
active_type: ""
active_type: ""
inputs {
inputs {
input_layer_name: "__conv_
0
__"
input_layer_name: "__conv_
1
__"
maxout_conf {
maxout_conf {
channels: 128
image_conf {
channels: 128
img_size: 24
img_size_y: 24
}
groups: 4
groups: 4
img_size_x: 0
img_size_y: 0
}
}
}
}
height: 24
width: 24
}
}
layers {
layers {
name: "__block_expand_layer_0__"
name: "__block_expand_layer_0__"
...
@@ -118,7 +138,7 @@ layers {
...
@@ -118,7 +138,7 @@ layers {
size: 192
size: 192
active_type: ""
active_type: ""
inputs {
inputs {
input_layer_name: "__maxout_layer_
0
__"
input_layer_name: "__maxout_layer_
1
__"
block_expand_conf {
block_expand_conf {
channels: 32
channels: 32
stride_x: 1
stride_x: 1
...
@@ -133,6 +153,8 @@ layers {
...
@@ -133,6 +153,8 @@ layers {
img_size_y: 0
img_size_y: 0
}
}
}
}
height: 24
width: 24
}
}
layers {
layers {
name: "__fc_layer_0__"
name: "__fc_layer_0__"
...
@@ -143,6 +165,8 @@ layers {
...
@@ -143,6 +165,8 @@ layers {
input_layer_name: "__block_expand_layer_0__"
input_layer_name: "__block_expand_layer_0__"
input_parameter_name: "___fc_layer_0__.w0"
input_parameter_name: "___fc_layer_0__.w0"
}
}
height: 24
width: 24
}
}
parameters {
parameters {
name: "___conv_0__.w0"
name: "___conv_0__.w0"
...
@@ -164,9 +188,9 @@ parameters {
...
@@ -164,9 +188,9 @@ parameters {
}
}
parameters {
parameters {
name: "___conv_1__.w0"
name: "___conv_1__.w0"
size:
36864
size:
9216
initial_mean: 0.0
initial_mean: 0.0
initial_std: 0.
0833333333333
initial_std: 0.
166666666667
initial_strategy: 0
initial_strategy: 0
initial_smart: false
initial_smart: false
}
}
...
...
python/paddle/trainer_config_helpers/tests/configs/protostr/test_spp_layer.protostr
浏览文件 @
496d64eb
...
@@ -4,6 +4,8 @@ layers {
...
@@ -4,6 +4,8 @@ layers {
type: "data"
type: "data"
size: 3200
size: 3200
active_type: ""
active_type: ""
height: 20
width: 10
}
}
layers {
layers {
name: "__spp_0__"
name: "__spp_0__"
...
@@ -13,13 +15,17 @@ layers {
...
@@ -13,13 +15,17 @@ layers {
inputs {
inputs {
input_layer_name: "data"
input_layer_name: "data"
spp_conf {
spp_conf {
image_conf {
channels: 16
img_size: 10
img_size_y: 20
}
pool_type: "max-projection"
pool_type: "max-projection"
pyramid_height: 2
pyramid_height: 2
channels: 16
img_size: 10
img_size_y: 20
}
}
}
}
height: 1
width: 5
}
}
input_layer_names: "data"
input_layer_names: "data"
output_layer_names: "__spp_0__"
output_layer_names: "__spp_0__"
...
...
python/paddle/trainer_config_helpers/tests/configs/test_bilinear_interp.py
浏览文件 @
496d64eb
...
@@ -17,7 +17,7 @@ bilinear = bilinear_interp_layer(input=conv, out_size_x=64, out_size_y=64)
...
@@ -17,7 +17,7 @@ bilinear = bilinear_interp_layer(input=conv, out_size_x=64, out_size_y=64)
pool
=
img_pool_layer
(
pool
=
img_pool_layer
(
input
=
bilinear
,
input
=
bilinear
,
num_channels
=
4
,
num_channels
=
16
,
pool_size
=
2
,
pool_size
=
2
,
stride
=
2
,
stride
=
2
,
pool_type
=
MaxPooling
())
pool_type
=
MaxPooling
())
...
...
python/paddle/trainer_config_helpers/tests/configs/test_maxout.py
浏览文件 @
496d64eb
...
@@ -2,7 +2,7 @@ from paddle.trainer_config_helpers import *
...
@@ -2,7 +2,7 @@ from paddle.trainer_config_helpers import *
settings
(
batch_size
=
1000
,
learning_rate
=
1e-5
)
settings
(
batch_size
=
1000
,
learning_rate
=
1e-5
)
data
=
data_layer
(
name
=
'data'
,
size
=
2304
)
data
=
data_layer
(
name
=
'data'
,
size
=
2304
,
height
=
48
,
width
=
48
)
conv
=
img_conv_layer
(
conv
=
img_conv_layer
(
input
=
data
,
input
=
data
,
...
@@ -21,16 +21,21 @@ pool = img_pool_layer(
...
@@ -21,16 +21,21 @@ pool = img_pool_layer(
conv2
=
img_conv_layer
(
conv2
=
img_conv_layer
(
input
=
pool
,
input
=
pool
,
filter_size
=
3
,
filter_size
=
3
,
num_channels
=
32
,
num_channels
=
8
,
num_filters
=
128
,
num_filters
=
128
,
padding
=
1
,
padding
=
1
,
act
=
LinearActivation
(),
act
=
LinearActivation
(),
bias_attr
=
True
)
bias_attr
=
True
)
maxout2
=
maxout_layer
(
input
=
conv
,
num_channels
=
128
,
groups
=
4
)
maxout2
=
maxout_layer
(
input
=
conv
2
,
num_channels
=
128
,
groups
=
4
)
block
=
block_expand_layer
(
block
=
block_expand_layer
(
input
=
maxout
,
num_channels
=
32
,
stride_x
=
1
,
stride_y
=
1
,
block_x
=
1
,
block_y
=
6
)
input
=
maxout2
,
num_channels
=
32
,
stride_x
=
1
,
stride_y
=
1
,
block_x
=
1
,
block_y
=
6
)
fc
=
fc_layer
(
input
=
block
,
size
=
384
,
bias_attr
=
False
)
fc
=
fc_layer
(
input
=
block
,
size
=
384
,
bias_attr
=
False
)
...
...
python/paddle/trainer_config_helpers/tests/configs/test_spp_layer.py
浏览文件 @
496d64eb
...
@@ -2,13 +2,9 @@ from paddle.trainer_config_helpers import *
...
@@ -2,13 +2,9 @@ from paddle.trainer_config_helpers import *
settings
(
batch_size
=
100
,
learning_rate
=
1e-5
)
settings
(
batch_size
=
100
,
learning_rate
=
1e-5
)
data
=
data_layer
(
name
=
'data'
,
size
=
3200
)
data
=
data_layer
(
name
=
'data'
,
size
=
3200
,
height
=
20
,
width
=
10
)
spp
=
spp_layer
(
spp
=
spp_layer
(
input
=
data
,
input
=
data
,
pyramid_height
=
2
,
num_channels
=
16
,
pool_type
=
MaxPooling
())
pyramid_height
=
2
,
num_channels
=
16
,
pool_type
=
MaxPooling
(),
img_width
=
10
)
outputs
(
spp
)
outputs
(
spp
)
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录