Как сохранить модель кераса в репозитории WML в Watson Studio? - PullRequest
0 голосов
/ 12 ноября 2018

Я пытаюсь развернуть модель Keras, обучаясь на наборе данных MNIST в студии Watson, но не могу сохранить и успешно развернуть ее.

Когда я пытаюсь сохранить объект модели, он говорит, что не может сохранить последовательный объект. Когда я пытаюсь преобразовать hd5 в tgz и сохранить его, он сохраняется, но при развертывании я получаю ошибку

"{"code":"load_model_failure","message":"SavedModel file does not exist at: /opt/ibm/s..."

Когда я пытаюсь развернуть файл hd5, он говорит, что он не в сжатом формате.

Может ли кто-нибудь помочь мне, как именно сохранить модель Keras и развернуть ее в студии Watson?

# 

convert class vectors to binary class matrices
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)

model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3),
                 activation='relu',
                 input_shape=input_shape))
model.add(Conv2D(64, (3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(num_classes, activation='softmax'))

model.compile(loss=keras.losses.categorical_crossentropy,
              optimizer=keras.optimizers.Adadelta(),
              metrics=['accuracy'])

model.fit(x_train, y_train,
          batch_size=batch_size,
          epochs=epochs,
          verbose=1,
          validation_data=(x_test, y_test))
score = model.evaluate(x_test, y_test, verbose=0)
print('Test loss:', score[0])
print('Test accuracy:', score[1])

model_result_path = "keras_model.h5"
model.save(model_result_path)

published_model = client.repository.store_model(model='keras_model.h5', meta_props=model_props,training_data=x_train, training_target=y_train)

Ответы [ 4 ]

0 голосов
/ 07 мая 2019

Шаг 1 : сохранить модель в файл .h5.

model_result_path = "keras_model.h5"
model.save(model_result_path)

Шаг 2 : сжать файл .h5 в tgz.

!tar -zcvf keras_model.tgz keras_model.h5

Шаг 3 : Важно> Для развертывания модели keras обязательно передать FRAMEWORK_LIBRARIES вместе с другими метапропеллинами. store_model WML документация .

metadata = {
client.repository.ModelMetaNames.NAME: 'Image-classifier',
client.repository.ModelMetaNames.FRAMEWORK_NAME: 'tensorflow',
client.repository.ModelMetaNames.FRAMEWORK_VERSION: '1.5',
client.repository.ModelMetaNames.FRAMEWORK_LIBRARIES:[{'name':'keras', 'version': '2.1.3'}]
}

Шаг 4 : сохранить модель.

published_model = client.repository.store_model(model= 'keras_model.tgz', meta_props=metadata, training_data= X_train,training_target= y_train)

шаг 5 : развертывание модели.

model_id = published_model["metadata"]["guid"]

model_deployment_details = client.deployments.create(artifact_uid=model_id, name="deployment_name" )
0 голосов
/ 14 ноября 2018

вы можете попробовать сжать файл h5 (т.е. сформировать tar.gz), а затем попробовать передать его в client.repository.store_model вместо прямой выдачи файла .h5.

0 голосов
/ 15 ноября 2018

Вам нужно будет указать путь к сжатому файлу keras. E.g.:

keras_file_path = "/Users/jsmith/keras/ker_seq_mnist_model.tar.gz"
published_model = client.repository.store_model(model=keras_file_path, meta_props=model_props,training_data=x_train, training_target=y_train)
0 голосов
/ 12 ноября 2018

Вы пытались просто передать сам объект модели Python в функцию store_model?

Например, см. Раздел 4.2 этого примера ноутбука: https://dataplatform.cloud.ibm.com/exchange/public/entry/view/1438a61212a64ac435c837ba040e6934

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...