SciSharp/TensorFlow.NET

Error loading or saving model

svarogaden opened this issue · 0 comments

Description

I create a model and save it, but when loading it I get an error.
System.NullReferenceException: "Object reference not set to an instance of an object."

` public Sequential CreateModelLSTMWithBatchNormalization()
{
Sequential model = KerasApi.keras.Sequential();

        model.add(KerasApi.keras.layers.Input(shape: new Shape(51, 3))); 
        model.add(KerasApi.keras.layers.LSTM(256, return_sequences: true));
        model.add(KerasApi.keras.layers.BatchNormalization());
        model.add(KerasApi.keras.layers.Dropout(0.3f)); 

        model.add(KerasApi.keras.layers.LSTM(128, return_sequences: true));
        model.add(KerasApi.keras.layers.BatchNormalization());
        model.add(KerasApi.keras.layers.Dropout(0.3f)); 

        model.add(KerasApi.keras.layers.LSTM(64));
        model.add(KerasApi.keras.layers.BatchNormalization());
        model.add(KerasApi.keras.layers.Dropout(0.3f)); 

        model.add(KerasApi.keras.layers.Dense(128, activation: "relu"));
        model.add(KerasApi.keras.layers.BatchNormalization());
        model.add(KerasApi.keras.layers.Dense(52, activation: "softmax"));
        var optimizer = new Adam(learning_rate: 0.001f);
        model.compile(optimizer: optimizer, loss: new Tensorflow.Keras.Losses.CategoricalCrossentropy(), metrics: new string[] { "accuracy" });

        model.summary();

        return model;
    }



    if (Directory.Exists(modelPath))
    {        
            model = (Sequential)KerasApi.keras.models.load_model(modelPath);               
   }
  else
{
      model = CreateModelLSTMWithBatchNormalization();
}

           public void TrainModelLSTM(NDArray X, NDArray Y, int epochs = 50, int batchSize = 52)
    {
        try
        {
            model.fit(X, Y, epochs: epochs, batch_size: batchSize);
            model.save(modelPath, save_format: "tf");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"Exception: {ex.Message}");
            Console.WriteLine(ex.StackTrace);
        }

    }

error

`