LoadLayersModel vs. loadGraphModel in TensorFlow.js

Jorge Guerra Pires, PhD
IdeaCoding Lab
Published in
2 min readMar 20, 2024

--

In TensorFlow.js, there are two primary methods for loading pre-trained models: loadGraphModel and loadLayersModel. Let’s explore the differences between them and discuss which one is more suitable for your needs:

  1. loadGraphModel:
  • Type of Model: This method loads a graph-based model (also known as a frozen model).
  • Parameters: The model parameters are fixed, and you cannot fine-tune the model with new data.
  • Use Case: It’s suitable for inference-only tasks where you don’t need to retrain the model.
  • Example: If you have a pre-trained model that you want to use for predictions without further training, loadGraphModel is a good choice.
  1. loadLayersModel:
  • Type of Model: This method loads a layers-based model.
  • Parameters: The model can be trained further using the fit() method in JavaScript.
  • Use Case: If you plan to fine-tune the model with additional data or perform transfer learning, loadLayersModel is the better option.
  • Example: If you want to load a model and continue training it on new data, use loadLayersModel.

In summary:

  • Use loadGraphModel for inference-only scenarios.
  • Use loadLayersModel if you need to fine-tune the model or train it further.

Remember to choose the method that aligns with your specific use case and requirements! 🤖📊

For more details, you can refer to the official TensorFlow.js documentation on model conversion and loading1.

One nice feature of LoadLayersModel is that you can create a single model, alongside your trained head model. They become one:

const featureModel = ...; // Your feature model
const trainedModel = ...; // Your trained model

// Extract weights
const featureWeights = featureModel.getWeights();
const trainedWeights = trainedModel.getWeights();

// Create a new model
const combinedModel = tf.sequential();
// Add layers from feature model
combinedModel.addLayers(featureModel.layers);
// Add layers from trained model
combinedModel.addLayers(trainedModel.layers);

// Assign weights
combinedModel.setWeights([...featureWeights, ...trainedWeights]);

Lear more: here

--

--

Jorge Guerra Pires, PhD
IdeaCoding Lab

Independent Researcher and writer at Amazon | “I want thinkers, not followers!” | More: https://linktr.ee/jorgeguerrapiresphd