MCPcopy
hub / github.com/lutzroeder/netron / deserialize_node

Method deserialize_node

source/python.js:19961–20044  ·  view source on GitHub ↗
(serialized_node, target)

Source from the content-addressed store, hash-verified

19959 return target;
19960 }
19961 deserialize_node(serialized_node, target) {
19962 let fx_node = null;
19963 if (torch._export.serde.serialize._SYM_OPS.has(target)) {
19964 const name = serialized_node.outputs[0].value.as_name;
19965 const args = this.deserialize_sym_op_inputs(serialized_node.inputs);
19966 fx_node = this.graph.create_node('call_function', target, args, null, name);
19967 this.deserialize_sym_op_outputs(serialized_node, fx_node);
19968 } else if (builtins.isinstance(target, torch._ops.HigherOrderOperator)) {
19969 const [args, kwargs] = this.deserialize_hoo_inputs(serialized_node.inputs);
19970 const metadata = this.deserialize_metadata(serialized_node.metadata);
19971 for (const x of [...args, ...kwargs.values()]) {
19972 if (builtins.isinstance(x, torch.fx.Node) && x.op === 'get_attr') {
19973 x.meta.update(metadata);
19974 }
19975 }
19976 const name = serialized_node.outputs.length === 1 &&
19977 builtins.hasattr(serialized_node.outputs[0], 'as_tensor') &&
19978 builtins.getattr(serialized_node, 'is_hop_single_tensor_return', true) ?
19979 serialized_node.outputs[0].as_tensor.name : null;
19980 fx_node = this.graph.create_node('call_function', target, args, kwargs, name);
19981 this.deserialize_outputs(serialized_node, fx_node);
19982 fx_node.meta.update(metadata);
19983 } else if (builtins.isinstance(target, torch._ops.OpOverload)) {
19984 const name = this._is_single_tensor_return(target) ? serialized_node.outputs[0].as_tensor.name : null;
19985 const [args, kwargs] = this.deserialize_inputs(target, serialized_node);
19986 fx_node = this.graph.create_node('call_function', target, args, kwargs, name);
19987 this.deserialize_outputs(serialized_node, fx_node);
19988 } else if (typeof target === 'string') {
19989 // Handle unresolved operators
19990 const arg_type = (arg) => {
19991 switch (arg && arg.type) {
19992 case 'as_tensor': return 'Tensor';
19993 case 'as_tensors': return 'Tensor[]';
19994 case 'as_optional_tensors': return 'Tensor?[]';
19995 case 'as_nested_tensors': return 'Tensor[][]';
19996 case 'as_int': return 'int';
19997 case 'as_ints': return 'int[]';
19998 case 'as_int_lists': return 'int[][]';
19999 case 'as_float': return 'float';
20000 case 'as_floats': return 'float[]';
20001 case 'as_float_lists': return 'float[][]';
20002 case 'as_bool': return 'bool';
20003 case 'as_bools': return 'bool[]';
20004 case 'as_string': return 'str';
20005 case 'as_strings': return 'str[]';
20006 case 'as_sym_int': return 'SymInt';
20007 case 'as_sym_ints': return 'SymInt[]';
20008 case 'as_sym_float': return 'SymFloat';
20009 case 'as_sym_floats': return 'SymFloat[]';
20010 case 'as_sym_bool': return 'SymBool';
20011 case 'as_sym_bools': return 'SymBool[]';
20012 case 'as_scalar_type': return 'ScalarType';
20013 case 'as_memory_format': return 'MemoryFormat';
20014 case 'as_layout': return 'Layout';
20015 case 'as_device': return 'Device';
20016 case 'as_operator': return 'str';
20017 default: return '?';
20018 }

Callers 1

deserialize_graphMethod · 0.80

Calls 15

schemaFunction · 0.85
deserialize_metadataMethod · 0.80
hasattrMethod · 0.80
deserialize_outputsMethod · 0.80
deserialize_inputsMethod · 0.80
hasMethod · 0.45
create_nodeMethod · 0.45
valuesMethod · 0.45

Tested by

no test coverage detected