Загрузите предварительно обученную модель keras для продолжения обучения в облаке Google - PullRequest
1 голос
/ 27 января 2020

Я пытаюсь загрузить предварительно обученную модель 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. Любая помощь очень ценится.

1 Ответ

0 голосов
/ 28 января 2020

Я бы предложил использовать для этого ноутбуки AI Platform. Загрузите обученную модель, используя этот метод . Проверьте код Python на вкладке Образцы кода. Когда у вас есть модель в виртуальной машине, на которой работает ноутбук, вы можете загрузить ее, как вы делали это локально. Здесь у вас есть пример, где используется tf.keras.models.load_model .

...