Open
Description
Description
When loading a previously saved sequential model with optimizer, the loaded model has optimizer = null. This leads to the training NOT continuing from the state before saving.
Reproduction Steps
I created a minimal LSTM network with Adam optimizer. I followed the steps outlined in #1246 (comment) to get model.save working. However, when I tried to load the model, I found the Optimizer to be null. My relevant code blocks are:
public void BuildModel()
{
var seqArgs = new Tensorflow.Keras.ArgsDefinition.SequentialArgs()
{
Name = "LSTMModel",
InputShape = new Tensorflow.Shape(TimeSteps, 1),
};
model = new Sequential(seqArgs);
for (int i = 0; i < NumberOfLayers; i++)
{
var lstmArgs = new Tensorflow.Keras.ArgsDefinition.LSTMArgs()
{
Units = NumberOfCells,
ReturnSequences = i < NumberOfLayers - 1,
InputShape = i == 0 ? new Tensorflow.Shape(TimeSteps, 1) : null,
Activation = new Tensorflow.Keras.Activations().Tanh,
RecurrentActivation = new Tensorflow.Keras.Activations().Sigmoid,
ActivityRegularizer = new Tensorflow.Keras.Regularizers().l2(L2Regularization)
};
var lstm = new LSTM(lstmArgs);
model.add(lstm);
if (i < NumberOfLayers - 1)
{
var args = new Tensorflow.Keras.ArgsDefinition.DropoutArgs()
{
Rate = DropoutRate,
};
var dropout = new Dropout(args);
model.add(dropout);
}
}
var denseArgs = new Tensorflow.Keras.ArgsDefinition.DenseArgs()
{
Units = 1,
KernelRegularizer = new Tensorflow.Keras.Regularizers().l2(L2Regularization)
};
var dense = new Dense(denseArgs);
model.add(dense);
}
public void SaveModel()
{
var tf = Tensorflow.Binding.tf;
string dir = @"C:\Users\bhair\Desktop\tmp";
var modelPath = Path.Combine(dir, "LSTMModel");
model.save(filepath: modelPath, overwrite: true, include_optimizer: true, save_format: "tf");
Adam a = (Adam)optimizer;
}
public void LoadModel()
{
var tf = Tensorflow.Binding.tf;
string dir = @"C:\Users\bhair\Desktop\tmp";
var modelPath = Path.Combine(dir, "LSTMModel");
model = (Sequential)tf.keras.models.load_model(modelPath, compile: true);
this.optimizer = model.Optimizer;
}
after loading, this.optimizer is null.
Known Workarounds
No response
Configuration and Other Information
Download the Tensorflow.Net master repo on 03 January 2025 and referenced the Tensorflow.Keras and Tensorflow.Bindings project from my project. Using SciSharp.Tensorflow.Redist 2.16.0.
Metadata
Metadata
Assignees
Labels
No labels