Tensorflow 2.0 сохранить обученную модель для обслуживания - PullRequest
1 голос
/ 31 октября 2019

Пожалуйста, помогите мне. Я использую графический процессор Tensorflow 2.0. Я тренирую модель и сохраняю в формате .h5

model = keras.Sequential()
model.add(layers.Bidirectional(layers.CuDNNLSTM(self._window_size, return_sequences=True),
                               input_shape=(self._window_size, x_train.shape[-1])))
model.add(layers.Dropout(rate=self._dropout, seed=self._seed))
model.add(layers.Bidirectional(layers.CuDNNLSTM((self._window_size * 2), return_sequences=True)))
model.add(layers.Dropout(rate=self._dropout, seed=self._seed))
model.add(layers.Bidirectional(layers.CuDNNLSTM(self._window_size, return_sequences=False)))
model.add(layers.Dense(units=1))
model.add(layers.Activation('linear'))
model.summary()

model.compile(
    loss='mean_squared_error',
    optimizer='adam'
)
# обучаем модель
history = model.fit(
    x_train,
    y_train,
    epochs=self._epochs,
    batch_size=self._batch_size,
    shuffle=False,
    validation_split=0.1
)

model.save('rts.h5')

Затем загружаю эту модель и использую ее для прогнозирования, и все работает.

model = keras.models.load_model('rts.h5')
y_hat = model.predict(x_test)

Но возник вопрос об использовании обученногомодель в сервировке Tensorflow. И модель в формате .h5 не принимается. Я бегу:

sudo docker run --gpus 1 -p 8501:8501 --mount type=bind,source=/home/alex/PycharmProjects/TensorflowServingTestData/RtsModel,target=/models/rts_model -e MODEL_NAME=rts_model -t tensorflow/serving:latest-gpu

Но встал вопрос об использовании обученной модели в Tensorflow Serving. И модель в формате .h5 не принимается. Я запускаю: И получаю ошибку:

tensorflow_serving/sources/storage_path/file_system_storage_path_source.cc:267] No versions of servable rts_model found under base path /models/rts_model

Я пытаюсь сохранить обученную модель, как описано здесь, https://www.tensorflow.org/guide/saved_model#using_savedmodel_with_estimators: enter image description here

И я получаю сообщение об ошибке:

ValueError: Layer has 2 states but was passed 0 initial states.

Я пытался сохранить модель следующим образом, https://www.tensorflow.org/api_docs/python/tf/keras/models/save_model: enter image description here

И с той же ошибкой:

ValueError: Layer has 2 states but was passed 0 initial states.

Единственное, что работает для сохранения модели в формате для обслуживания Tensorflow:

keras.experimental.export_saved_model(model, 'saved_model/1/')

Сохранение работы модели в обслуживании. Но я получаю предупреждение, что этот метод устарел и будет удален в следующей версии.

Instructions for updating:
Please use `model.save(..., save_format="tf")` or `tf.keras.models.save_model(..., save_format="tf")`.

И он закрыл меня. Когда я пытаюсь использовать эти методы, выдает ошибку. Когда я использую то, что работает, пишет, что это устарело.

Пожалуйста, помогите. Как сохранить обученную модель в Tensorflow 2.0. так что его можно использовать для обслуживания Tensorflow.

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