import onnx
from onnx import helper
from onnx import AttributeProto, TensorProto, GraphProto

# Create one input (ValueInfoProto)
X1 = helper.make_tensor_value_info('X1', TensorProto.FLOAT, [3, 2])
X2 = helper.make_tensor_value_info('X2', TensorProto.FLOAT, [3, 2])

# Create one output (ValueInfoProto)
Y = helper.make_tensor_value_info('Y', TensorProto.FLOAT, [3, 2])

# Create a node (NodeProto) - This is based on Pad-11
node_def = helper.make_node(
  'Add', # node name
  ['X1', 'X2'], # inputs
  ['Y'], # outputs
)

# Create the graph (GraphProto)
graph_def = helper.make_graph(
  [node_def],
  'test-model',
  [X1, X2],
  [Y],
)

# Create the model (ModelProto)
model_def = helper.make_model(graph_def, producer_name='onnx-example')

print('The model is:\n{}'.format(model_def))
onnx.checker.check_model(model_def)
onnx.save(model_def, "add.onnx")
print('The model is checked!')