Я пытаюсь загрузить предварительно обученную модель Keras, чтобы продолжить обучение в облаке Google. Он работает локально, просто загружая дискриминатор и генератор с
model = load_model('myPretrainedModel.h5')
Но, очевидно, это не работает в облаке Google, я попытался использовать тот же метод, который я использую для чтения данных обучения из моего хранилища Google bucket, с:
fil = "gs://mygcbucket/myPretrainedModel.h5"
f = BytesIO(file_io.read_file_to_string(fil, binary_mode=True))
return np.load(f)
Однако, похоже, это не работает для загрузки модели, я получаю следующую ошибку при выполнении задания.
ValueError: Невозможно загрузить файл, содержащий маринованные данные, когда allow_pickle = False
при добавлении allow_pickle=True
выдает еще одну ошибку:
OSError: Не удалось интерпретировать файл <_io.BytesIO object в 0x7fdf2bb42620> в качестве маринада
Затем я попробовал кое-что, что нашел, поскольку кто-то предложил аналогичную проблему, поскольку, как я понимаю, временно восстанавливал модель локально (в зависимости от того, где выполняется задание) из корзины, а затем загружал ее, с:
fil = "gs://mygcbucket/myPretrainedModel.h5"
model_file = file_io.FileIO(fil, mode='rb')
file_stream = file_io.FileIO(model_file, mode='r')
temp_model_location = './temp_model.h5'
temp_model_file = open(temp_model_location, 'wb')
temp_model_file.write(file_stream.read())
temp_model_file.close()
file_stream.close()
model = load_model(temp_model_location)
return model
Однако, это выдает следующую ошибку:
TypeError: Ожидаемая двоичная или Unicode строка, полученная тензор потока. python .lib.io.file_io.FileIO объект
Я должен признать, что я не совсем уверен, что мне нужно сделать, чтобы фактически загрузить предварительно обученную модель keras из моего хранилища, и использовать ее, если в моя учебная работа в облаке Google. Любая помощь очень ценится.