Google Cloud не может сохранить модель Tensorflow из записной книжки Jupyter

#python #tensorflow #google-cloud-platform #jupyter-notebook

#python #tensorflow #google-облачная платформа #jupyter-notebook

Вопрос:

Я создаю и обучаю модель TensorFlow в Google Cloud в своих ноутбуках JupyterLab AI, но по какой-то причине я не могу найти способ сохранить свою модель после ее создания.

Обычно я бы использовал created_model.save(str('/saved_model_file')) in Colab для сохранения в локальном каталоге.

Но JuptyerLab в Google Cloud выдает ошибку «Отказано в разрешении», я попытался предоставить все возможные максимальные разрешения в AIM, я единственный человек на счету. Но ошибка сохраняется.

Но я, похоже, способен сохранять большие двоичные объекты в сегменты, используя blob.upload_from_filename(source_file_name) or blob.upload_from_string(source_file_name) , сохранение которого в сегментах кажется более подходящей стратегией.

Но ни один из них не будет использовать обученную модель, созданную TensorFlow, поскольку это скорее функция, а не тип файла, который они, похоже, ищут. В руководствах, похоже, случайно упоминается, что вы должны сохранить свою модель в корзину, но полностью пренебрегаете предоставлением каких-либо простых примеров кода, по-видимому, я единственный парень на земле, который не родился, зная, как это сделать.

Было бы здорово, если бы кто-нибудь мог предоставить несколько примеров кода о том, как сохранить модель TensorFlow в корзину. Мне также нужно, чтобы эта функция выполнялась автоматически кодом python. Спасибо!

Комментарии:

1. Сохранение вашей модели локально и использование большого двоичного объекта для экспорта в GCS должно сработать.

2. Есть ли еще сообщения об ошибках на первом шаге или только «Отказано в разрешении»?

3. @R.Esteves спасибо за ваш ответ. Нет, ошибка не уточняет «отказано в разрешении». Но что касается большого двоичного объекта, я получаю ошибку «<tensorflow.python.keras.engine. функционально. Функциональный объект по адресу 0x7f8293396c50> не удалось преобразовать в байты» И это в ответ на загрузку из строки «blob.upload_from_string (model)»

4. Вы пытаетесь сохранить в своей корзине непосредственно из объекта внутри вашего кода?

Ответ №1:

Кажется, вам просто нужно сначала создать путь с помощью модуля OS, после чего функция TF будет работать. Это кажется странным, другие платформы, которые я использовал, позволяют функции TF самостоятельно создавать путь. По-видимому, Google Cloud это не нравится, возможно, где-то в иерархии есть какое-то пользовательское разрешение, которое вызывает эту проблему.

ИМЯ_МОДЕЛИ = ‘model_directory’
имя_модели = int(time.time())
имя_модели = os.path.join(ИМЯ_МОДЕЛИ, str(model_version))
os.makedirs(model_path)
tf.saved_model.save(model, model_path)