| 55 | name + '/b': param[1].data} |
| 56 | |
| 57 | def proc_fc(self, idx, name, param): |
| 58 | # TODO caffe has an 'transpose' option for fc/W |
| 59 | assert len(param) == 2 |
| 60 | prev_layer_name = self.net.bottom_names[name][0] |
| 61 | prev_layer_output = self.net.blobs[prev_layer_name].data |
| 62 | if prev_layer_output.ndim == 4: |
| 63 | logger.info("FC layer {} takes spatial data.".format(name)) |
| 64 | W = param[0].data |
| 65 | # original: outx(CxHxW) |
| 66 | W = W.reshape((-1,) + prev_layer_output.shape[1:]).transpose(2, 3, 1, 0) |
| 67 | # become: (HxWxC)xout |
| 68 | else: |
| 69 | W = param[0].data.transpose() |
| 70 | return {name + '/W': W, |
| 71 | name + '/b': param[1].data} |
| 72 | |
| 73 | def proc_bn(self, idx, name, param): |
| 74 | scale_factor = param[2].data[0] |