def convert_box(converter, nnef_op, onnx_graph): # type: (Converter, NNEFOperation, ONNXGraph)->None input, output = converter.converted_tensors((nnef_op.input, nnef_op.output)) if nnef_op.attribs['size'] == [1] * input.rank: onnx_op = ONNXOperation(graph=onnx_graph, name='Pad', inputs=input, attribs=dict(mode=converter.onnx_pad_mode(nnef_op.attribs['border']), pads=converter.onnx_pads(nnef_op.attribs['padding'])), outputs=output) if onnx_op.attribs['mode'] == 'constant': onnx_op.attribs['value'] = 0.0 return if nnef_op.attribs['normalize']: partial_convert_pool(converter, nnef_op, onnx_graph, target_name='AveragePool', input=input, outputs=(output,)) else: temporary = ONNXTensor(graph=onnx_graph, shape=list(output.shape), dtype=output.dtype) partial_convert_pool(converter, nnef_op, onnx_graph, target_name='AveragePool', input=input, outputs=(temporary,), force_constant=True) ONNXOperation( graph=onnx_graph, name='Mul', inputs=(temporary, converter.constant_0d_tensor(onnx_graph, float(np.product(nnef_op.attribs['size'])), 'FLOAT')), outputs=output)
def convert_pad(converter, nnef_op, onnx_graph): # type: (Converter, NNEFOperation, ONNXGraph)->None input, output = converter.converted_tensors((nnef_op.input, nnef_op.output)) onnx_op = ONNXOperation(graph=onnx_graph, name='Pad', inputs=input, attribs=dict(mode=converter.onnx_pad_mode(nnef_op.attribs['border']), pads=converter.onnx_pads(nnef_op.attribs['padding'])), outputs=output) if onnx_op.attribs['mode'] == 'constant': onnx_op.attribs['value'] = 0.0