Title here
Summary here
import { parseKeras } from "@wetron/keras";
const graph = parseKeras(bytes); // synchronous, returns ModelGraph
config.json from inside the .keras ZIP archive - contains the full layer graphclass_name values: Sequential, FunctionalInputLayer entries -> ModelGraph.inputs (excluded from nodes)class_name -> node opTypeconfig fields -> node attributes (name, dtype, trainable filtered out)inbound_nodes[].args[].keras_history for Functional models; chained sequentially for Sequential modelsKeras 3 serializes tensor references as { class_name: "__keras_tensor__", config: { keras_history: [...] } }. The parser handles both this form and the older { keras_history: [...] } shorthand.
fflate for ZIP decompression.ModelGraph.initializers is empty and ModelGraph.weights is absent - Keras 3 stores trained weights in a separate .weights.h5 file which this parser does not read.ModelGraph.tensorShapes is populated from InputLayer batch shapes only (null batch dimension -> -1).Concatenate) correctly receive multiple inputs entries from the args array in inbound_nodes.ParseError if config.json is missing, invalid JSON, or uses an unsupported model class.