MCPcopy Index your code
hub / github.com/lutzroeder/netron / deserialize_multiple_outputs

Method deserialize_multiple_outputs

source/python.js:20379–20460  ·  view source on GitHub ↗
(serialized_node, fx_node)

Source from the content-addressed store, hash-verified

20377 this.deserialize_multiple_outputs(serialized_node, fx_node);
20378 }
20379 deserialize_multiple_outputs(serialized_node, fx_node) {
20380 const deserialized_metadata = this.deserialize_metadata(serialized_node.metadata);
20381 const generate_getitem = (meta_val, fx_node, arg, idx) => {
20382 let name = '';
20383 if (arg instanceof torch._export.serde.schema.TensorArgument) {
20384 name = arg.name;
20385 } else if (arg instanceof torch._export.serde.schema.SymIntArgument) {
20386 name = arg.as_name;
20387 } else if (arg instanceof torch._export.serde.schema.SymFloatArgument) {
20388 name = arg.as_name;
20389 } else {
20390 throw new python.Error(`Unsupported argument type '${arg}'.`);
20391 }
20392 const individual_output = this.graph.create_node(
20393 'call_function',
20394 operator.getitem,
20395 new builtins.tuple([fx_node, idx]),
20396 null,
20397 name,
20398 );
20399 this.sync_fx_node(name, individual_output);
20400 meta_val.push(this.serialized_name_to_meta.get(name));
20401 individual_output.meta.update(deserialized_metadata);
20402 };
20403 const generate_getitems = (meta_val, fx_node, args) => {
20404 for (let idx = 0; idx < args.length; idx++) {
20405 const arg = args[idx];
20406 if (arg instanceof torch._export.serde.schema.TensorArgument ||
20407 arg instanceof torch._export.serde.schema.SymIntArgument ||
20408 arg instanceof torch._export.serde.schema.SymFloatArgument) {
20409 generate_getitem(meta_val, fx_node, arg, idx);
20410 } else if (arg instanceof torch._export.serde.schema.Argument) {
20411 if (arg.type === 'as_tensor' || arg.type === 'as_sym_int' || arg.type === 'as_sym_float') {
20412 generate_getitem(meta_val, fx_node, arg.value, idx);
20413 } else if (arg.type === 'as_none') {
20414 const individual_output = this.graph.create_node(
20415 'call_function',
20416 operator.getitem,
20417 new builtins.tuple([fx_node, idx]),
20418 null,
20419 'as_none',
20420 );
20421 meta_val.push(null);
20422 individual_output.meta.set('val', null);
20423 individual_output.meta.update(deserialized_metadata);
20424 } else if (Array.isArray(arg.value)) {
20425 const list_output = this.graph.create_node(
20426 'call_function',
20427 operator.getitem,
20428 new builtins.tuple([fx_node, idx]),
20429 );
20430 meta_val.push([]);
20431 generate_getitems(meta_val[meta_val.length - 1], list_output, arg.value);
20432 list_output.meta.update(deserialized_metadata);
20433 list_output.meta.set('val', meta_val[meta_val.length - 1]);
20434 } else {
20435 throw new python.Error(`Unsupported node output type '${arg.type}'.`);
20436 }

Callers 1

deserialize_outputsMethod · 0.80

Calls 2

deserialize_metadataMethod · 0.80
setMethod · 0.45

Tested by

no test coverage detected