Skip to content

Commit 6245fed

Browse files
author
Haonan
committed
rotate_layer python interface fixes
1 parent 7f4042e commit 6245fed

File tree

6 files changed

+19
-12
lines changed

6 files changed

+19
-12
lines changed

paddle/gserver/layers/FeatureMapExpandLayer.cpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ void FeatureMapExpandLayer::forward(PassType passType) {
9595

9696
void FeatureMapExpandLayer::backward(const UpdateCallback& callback) {
9797
MatrixPtr inGrad = getInputGrad(0);
98+
if (NULL == inGrad) {
99+
return;
100+
}
98101
MatrixPtr outGrad = getOutputGrad();
99102
size_t batchSize = getInput(0).getBatchSize();
100103
int imgSize = inGrad->getWidth();

paddle/gserver/layers/GruStepLayer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ bool GruStepLayer::init(const LayerMap& layerMap,
6868
if (!Layer::init(layerMap, parameterMap)) return false;
6969
CHECK_EQ(2U, inputLayers_.size());
7070

71-
CHECK_EQ(getSize() * getSize() * 3, parameters_[1]->getSize());
72-
weight_.reset(new Weight(getSize(), getSize() * 3, parameters_[1]));
71+
CHECK_EQ(getSize() * getSize() * 3, parameters_[0]->getSize());
72+
weight_.reset(new Weight(getSize(), getSize() * 3, parameters_[0]));
7373

7474
if (biasParameter_.get() != NULL) {
7575
CHECK_EQ(getSize() * 3, biasParameter_->getSize());

paddle/gserver/layers/RotateLayer.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ bool RotateLayer::init(const LayerMap& layerMap,
2525
CHECK_EQ(inputLayers_.size(), 1UL);
2626
height_ = config_.height();
2727
width_ = config_.width();
28+
CHECK_GT(height_, 0);
29+
CHECK_GT(width_, 0);
2830
return true;
2931
}
3032

python/paddle/trainer/config_parser.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1969,13 +1969,13 @@ def __init__(self, name, size, inputs, **xargs):
19691969

19701970
@config_layer('rotate')
19711971
class RotateLayer(LayerBase):
1972-
def __init__(self, name, inputs, height, device=None):
1972+
def __init__(self, name, inputs, height, width, device=None):
19731973
super(RotateLayer, self).__init__(
19741974
name, 'rotate', 0, inputs=inputs, device=device)
19751975
config_assert(
19761976
len(self.inputs) == 1,
19771977
'RotateLayer must have one and only one input')
1978-
self.config.height = height
1978+
self.set_layer_height_width(height, width)
19791979
self.set_layer_size(self.get_input_layer(0).size)
19801980

19811981

@@ -3007,7 +3007,7 @@ def __init__(self,
30073007
config_assert(input_layer1.size == size,
30083008
'input_layer1.size != layer.size')
30093009
self.config.active_gate_type = active_gate_type
3010-
self.create_input_parameter(1, size * size * 3, [size, size * 3])
3010+
self.create_input_parameter(0, size * size * 3, [size, size * 3])
30113011
self.create_bias_parameter(bias, size * 3)
30123012

30133013

python/paddle/trainer_config_helpers/layers.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1677,22 +1677,23 @@ def trans_layer(input, name=None, layer_attr=None):
16771677

16781678
@wrap_name_default()
16791679
@layer_support()
1680-
def rotate_layer(input, height, name=None, layer_attr=None):
1680+
def rotate_layer(input, height, width, name=None, layer_attr=None):
16811681
"""
1682-
A layer for rotation (clock-wise), usually used when the input sample
1683-
is some image or map.
1682+
A layer for rotating 90 degrees (clock-wise), usually used when the input sample
1683+
is some image or feature map.
16841684
16851685
.. math::
1686-
y(j,i) = x(M-i-1,j)
1686+
y(j,i,:) = x(M-i-1,j,:)
16871687
1688-
where :math:`x` is (M x N) input, and :math:`y` is (N x M) output.
1688+
where :math:`x` is (M x N x C) input, and :math:`y` is (N x M x C) output.
16891689
16901690
The example usage is:
16911691
16921692
.. code-block:: python
16931693
16941694
rot = rotate_layer(input=layer,
1695-
height=100)
1695+
height=100,
1696+
width=100)
16961697
16971698
:param input: Input layer.
16981699
:type input: LayerOutput
@@ -1709,6 +1710,7 @@ def rotate_layer(input, height, name=None, layer_attr=None):
17091710
l = Layer(
17101711
name=name,
17111712
height=height,
1713+
width=width,
17121714
type=LayerType.ROTATE_LAYER,
17131715
inputs=[input.name],
17141716
**ExtraLayerAttribute.to_kwargs(layer_attr))

python/paddle/trainer_config_helpers/tests/layers_test_config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
assert z1.size > 0
4040

4141
y2 = fc_layer(input=y, size=15)
42-
z2 = rotate_layer(input=y2, height=5)
42+
z2 = rotate_layer(input=y2, height=5, width=3)
4343

4444
cos1 = cos_sim(a=x1, b=y1)
4545
cos3 = cos_sim(a=x1, b=y2, size=3)

0 commit comments

Comments
 (0)