(self)
| 153 | |
| 154 | class _Pooling(CaffeOpExporter): |
| 155 | def set_attr(self): |
| 156 | kernel_h, kernel_w = refine_value(self.op.attributes.get('kernel_shape')) |
| 157 | stride_h, stride_w = refine_value(self.op.attributes.get('strides', [1, 1])) |
| 158 | ceil_mode = refine_value(self.op.attributes.get('ceil_mode', 0)) |
| 159 | pads = refine_value(self.op.attributes.get('pads', [0, 0])) |
| 160 | if len(pads) == 2: |
| 161 | pad_h, pad_w = pads |
| 162 | elif len(pads) == 4: |
| 163 | begin_pad = pads[:2] |
| 164 | end_pad = pads[2:] |
| 165 | if begin_pad == end_pad: |
| 166 | pad_h, pad_w = begin_pad |
| 167 | else: |
| 168 | logger.error('Caffe only support begin_pad == end_pad in layer') |
| 169 | else: |
| 170 | logger.error(f'Unsupported pads attributes with the length of {len(pads)} in Caffe') |
| 171 | |
| 172 | self.layer.pooling_param.kernel_h = kernel_h |
| 173 | self.layer.pooling_param.kernel_w = kernel_w |
| 174 | self.layer.pooling_param.pad_h = pad_h |
| 175 | self.layer.pooling_param.pad_w = pad_w |
| 176 | self.layer.pooling_param.stride_h = stride_h |
| 177 | self.layer.pooling_param.stride_w = stride_w |
| 178 | if ceil_mode == 0: |
| 179 | # ceil_mode is True by CaffeOpExporter in caffe |
| 180 | self.layer.pooling_param.ceil_mode = False |
| 181 | |
| 182 | |
| 183 | @register_class |
nothing calls this directly
no test coverage detected