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_matmul(converter, nnef_op, onnx_graph): # type: (Converter, NNEFOperation, ONNXGraph)->None A, B = converter.converted_tensors(nnef_op.inputs) C = converter.converted_tensor(nnef_op.output) assert A.rank <= 2 and B.rank <= 2, "Batch matmul is unsupported in ONNX" ONNXOperation(graph=onnx_graph, name='Gemm', inputs=(A, B, converter.constant_0d_tensor(graph=onnx_graph, value=0.0, dtype=C.dtype)), outputs=C, attribs=dict(transA=1 if nnef_op.attribs['transposeA'] else 0, transB=1 if nnef_op.attribs['transposeB'] else 0))
def convert_round(converter, nnef_op, onnx_graph): # type: (Converter, NNEFOperation, ONNXGraph)->None input, output = converter.converted_tensors((nnef_op.input, nnef_op.output)) add = ONNXOperation(graph=onnx_graph, name='Add', inputs=(input, converter.constant_0d_tensor(graph=onnx_graph, value=0.5, dtype=input.dtype)), outputs=ONNXTensor(graph=onnx_graph, shape=list(output.shape), dtype=output.dtype)) ONNXOperation(graph=onnx_graph, name='Floor', inputs=add.output, outputs=output)