optimizer
optimizer copied to clipboard
why default pass only have 'eliminate_nop_transpose', 'eliminate_nop_pad','fuse_consecutive_transposes', 'fuse_transpose_into_gemm'?
In optimze func:
def optimize(model, passes=None, fixed_point=False): # type: (ModelProto, Optional[Sequence[Text]], bool) -> ModelProto
"""Apply the optimization on the serialized ModelProto.
Arguments:
input (ModelProto): model
names (list of string): list of optimization names
Return:
return (ModelProto) optimized model
"""
if passes is None:
print('WARNING: defualt optimization passes will be enlarged to all fuse and elimination passes in the next version')
passes = ['eliminate_nop_transpose',
'eliminate_nop_pad',
'fuse_consecutive_transposes',
'fuse_transpose_into_gemm']
if not isinstance(model, ModelProto):
raise ValueError(
'Optimizer only accepts ModelProto, incorrect type: {}'.format(type(model)))
model_str = model.SerializeToString()
if fixed_point:
optimized_model_str = C.optimize_fixedpoint(model_str, passes)
else:
optimized_model_str = C.optimize(model_str, passes)
return onnx.load_from_string(optimized_model_str)
default pass: passes = ['eliminate_nop_transpose', 'eliminate_nop_pad', 'fuse_consecutive_transposes', 'fuse_transpose_into_gemm']
Why are there only these types of default passes? Can all passes be used together? Are there any restrictions between various passes?