MCPcopy Create free account
hub / github.com/XiaoMi/mace / do_fold_instance_norm

Method do_fold_instance_norm

tools/python/transform/transformer.py:3275–3304  ·  view source on GitHub ↗
(self, op, lhs_dict, rhs_dict, scale_offset,
                              unused_ops, unused_args, epsilon)

Source from the content-addressed store, hash-verified

3273 return lhs_dict
3274
3275 def do_fold_instance_norm(self, op, lhs_dict, rhs_dict, scale_offset,
3276 unused_ops, unused_args, epsilon):
3277 net = self._model
3278 del op.output_shape[0].dims[:]
3279 op.output_shape[0].dims.extend(
3280 lhs_dict['final_add_op'].output_shape[0].dims)
3281 for unused_op in unused_ops:
3282 net.op.remove(unused_op)
3283
3284 affine_arg = op.arg.add()
3285 affine_arg.name = MaceKeyword.mace_affine_str
3286 if scale_offset:
3287 affine_arg.i = 1
3288 op.input.extend([rhs_dict['scale_tensor_name'],
3289 rhs_dict['offset_tensor_name']])
3290 net.op.remove(rhs_dict['rsqrt_mul_scale_op'])
3291 else:
3292 affine_arg.i = 0
3293 net.op.remove(rhs_dict['rhs_of_final_add'])
3294 net.op.remove(lhs_dict['lhs_of_final_add'])
3295 self.replace_quantize_info(op, lhs_dict['final_add_op'])
3296 op.output[0] = lhs_dict['final_add_op'].output[0]
3297 self.safe_remove_node(lhs_dict['final_add_op'], op)
3298
3299 op.type = MaceOp.InstanceNorm.name
3300 for arg in unused_args:
3301 op.arg.remove(arg)
3302 epsilon_arg = op.arg.add()
3303 epsilon_arg.name = MaceKeyword.mace_epsilon_str
3304 epsilon_arg.f = epsilon
3305
3306 def fold_instance_norm(self):
3307 net = self._model

Callers 1

fold_instance_normMethod · 0.95

Calls 2

replace_quantize_infoMethod · 0.95
safe_remove_nodeMethod · 0.95

Tested by

no test coverage detected