diff --git a/proto/ModelConfig.proto b/proto/ModelConfig.proto index e3248b21c7d8a92b5cf16c7958fb9008f3820ec1..6eb12b899102b87cd320736994583c467d94a851 100644 --- a/proto/ModelConfig.proto +++ b/proto/ModelConfig.proto @@ -517,7 +517,7 @@ message LayerConfig { optional double delta = 57 [ default = 1.0 ]; // for 3D data - optional double depth = 58 [ default = 1 ]; + optional uint64 depth = 58 [ default = 1 ]; } message EvaluatorConfig { diff --git a/python/paddle/trainer/config_parser.py b/python/paddle/trainer/config_parser.py index 43c151d6d14c7b17791ed0ba13bd7c5981f179d6..b6ae11147fc92885b1c59ea14b978a532f97b42a 100644 --- a/python/paddle/trainer/config_parser.py +++ b/python/paddle/trainer/config_parser.py @@ -2735,9 +2735,21 @@ class AddToLayer(LayerBase): super(AddToLayer, self).__init__( name, 'addto', 0, inputs=inputs, **xargs) config_assert(len(inputs) > 0, 'inputs cannot be empty for AddToLayer') - for input_index in xrange(len(self.inputs)): - input_layer = self.get_input_layer(input_index) - self.set_layer_size(input_layer.size) + + if len(self.inputs) > 1: + assert len(self.inputs) == 2 + assert self.get_input_layer(0).size == self.get_input_layer(1).size + assert self.get_input_layer(0).depth == self.get_input_layer( + 1).depth + assert self.get_input_layer(0).height == self.get_input_layer( + 1).height + assert self.get_input_layer(0).width == self.get_input_layer( + 1).width + + self.set_layer_size(self.get_input_layer(0).size) + self.set_layer_height_width(self.get_input_layer(0).height, \ + self.get_input_layer(0).width) + self.set_layer_depth(self.get_input_layer(0).depth) self.create_bias_parameter(bias, self.config.size) @@ -3422,6 +3434,9 @@ class ConcatenateLayer(LayerBase): if self.config.size == 0: size += input_layer.size + self.set_layer_height_width(self.get_input_layer(0).height, \ + self.get_input_layer(0).width) + self.set_layer_depth(self.get_input_layer(0).depth) self.set_layer_size(size) diff --git a/python/paddle/trainer_config_helpers/layers.py b/python/paddle/trainer_config_helpers/layers.py index b167a3f78af0a9a34fbf1ddf7bf5486c25b2462c..88cb328206b40ee5d1280c7b20c9824d4ae0c952 100644 --- a/python/paddle/trainer_config_helpers/layers.py +++ b/python/paddle/trainer_config_helpers/layers.py @@ -352,6 +352,10 @@ class LayerOutput(object): def height(self): return cp.g_layer_map[self.full_name].height + @property + def depth(self): + return cp.g_layer_map[self.full_name].depth + def set_input(self, input): """ Set the input for a memory layer. Can only be used for memory layer