Tensorflow.Net: как загрузить последовательную модель, сохраненную с помощью model.Save()?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Tensorflow.Net: как загрузить последовательную модель, сохраненную с помощью model.Save()?

Сообщение Anonymous »

Я только начинаю работать с Tensorflow.Net (0.150.0) на .Net (8.0). Я только что создал базовую последовательную модель и успешно ее сохранил. Однако я не могу загрузить его обратно как последовательную модель. Я проверил (несколько) примеров, доступных в Интернете относительно Tensorflow.Net, но почему-то не смог преодолеть узкое место. Где я делаю ошибку?
Функции BuildModel(), CompileModel(), SaveModel() и LoadModel() показаны ниже. Как уже упоминалось, SaveModel действительно создает:
  • fingerprint.pb
  • keras_metadata.pb
  • saved_model.pb
  • Переменные [Папка]
  • Активы [Папка]
Однако, когда я пытаюсь использовать метода LoadModel, я получаю:
Изображение

Мой код:

Код: Выделить всё


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;
}

Я пробовал различные подходы к загрузке модели, но в большинстве случаев получал ошибку «Не реализовано». Я даже спросил у второго пилота, но второй бегал кругами и не мог подсказать ничего полезного. Я проверил очень немногие примеры, связанные с Tensorflow.Net. https://github.com/SciSharp/TensorFlow.NET/issues/932 предполагает, что проблема была решена давно, причем тоже на графическом процессоре. Я пытаюсь сохранить данные, используя процессор, но не могу!

Подробнее здесь: https://stackoverflow.com/questions/793 ... model-save
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»