BuildModel(), CompileModel(), SaveModel() und LoadModel() sind wie folgt. Wie bereits erwähnt, erstellt SaveModel tatsächlich:
- fingerprint.pb
- keras_metadata.pb
- saved_model.pb
- Variablen [Ordner]
- Assets [Ordner]

< /p>
Ich hoffe, dass ich keine Details vermisse. Gerne teile ich Ihnen bei Bedarf weitere Einzelheiten mit.
Mein Code:
Code: Select all
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 CompileModel()
{
var lf = new Tensorflow.Keras.Losses.MeanSquaredError();
var optimizer = new Adam(learning_rate: LearningRate);
model.compile(optimizer: optimizer, loss: lf);
}
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");
}
public void LoadModel()
{
var tf = Tensorflow.Binding.tf;
string dir = @"C:\Users\bhair\Desktop\tmp";
var modelPath = Path.Combine(dir, "LSTMModel");
var x = tf.keras.models.load_model(modelPath);
model = (Sequential)x;
}