<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def graph_to_gluon(self, graph, ctx):
 """Construct SymbolBlock from onnx graph. Parameters graph : onnx protobuf object The loaded onnx graph ctx : Context or list of Context Loads the model into one or many context(s). Returns ------- sym_block :gluon.nn.SymbolBlock The returned gluon SymbolBlock """

        sym, arg_params, aux_params = self.from_onnx(graph)
        metadata = self.get_graph_metadata(graph)
        data_names = [input_tensor[0] for input_tensor in metadata['input_tensor_data']]
        data_inputs = [symbol.var(data_name) for data_name in data_names]

        from ....gluon import SymbolBlock
        net = SymbolBlock(outputs=sym, inputs=data_inputs)
        net_params = net.collect_params()
        for param in arg_params:
            if param in net_params:
                net_params[param].shape = arg_params[param].shape
                net_params[param]._load_init(arg_params[param], ctx=ctx)
        for param in aux_params:
            if param in net_params:
                net_params[param].shape = aux_params[param].shape
                net_params[param]._load_init(aux_params[param], ctx=ctx)
        return net