Двигатель GC ML выдает одинаковый результат с двумя разными моделями - PullRequest
0 голосов
/ 23 ноября 2018

Я разработал две разные версии модели в Keras и преобразовал их в Tensorflow следующим образом:

import keras.backend as K
from keras.models import load_model, Sequential
from tensorflow.python.saved_model import builder as saved_model_builder
from tensorflow.python.saved_model import tag_constants, signature_constants
from tensorflow.python.saved_model.signature_def_utils_impl import predict_signature_def

# reset session
K.clear_session()
sess = tensorflow.Session()
K.set_session(sess)

# disable loading of learning nodes
K.set_learning_phase(0)

# load model
model = load_model('model.h5')
config = model.get_config()
weights = model.get_weights()
new_Model = Sequential.from_config(config)
new_Model.set_weights(weights)

# export saved model
export_path = 'export-pb-variables'

builder = saved_model_builder.SavedModelBuilder(export_path) #builder = tf.saved_model.builder.SavedModelBuilder(export_path)


signature = predict_signature_def(inputs={'input': new_Model.input}, 
                              outputs={'output': new_Model.output})

with K.get_session() as sess:
    builder.add_meta_graph_and_variables(
        sess=sess,
        tags=[tag_constants.SERVING],
        signature_def_map={
            signature_constants.DEFAULT_SERVING_SIGNATURE_DEF_KEY: signature}
    )
builder.save()

Каждая модель вызвала файл .pb вместе с папкой переменных.Затем я проверил, что могу использовать эти файлы для восстановления модели и получения прогнозов следующим образом:

# reset session
keras.backend.clear_session()
sess = tf.Session()
keras.backend.set_session(sess)

with keras.backend.get_session() as sess:
    tf.saved_model.loader.load(sess, [tag_constants.SERVING], path_to_exported_model)
    result = sess.run('dense_1/Sigmoid:0', feed_dict={'lstm1_input_1:0': one_input_example})
    print(result)

Локально две версии воспроизводимы и дают разные результаты для разных входных параметров, как и должно быть,Однако после того, как я загрузил их в GC, чтобы делать прогнозы с использованием ML Engine, эти две версии дают один и тот же результат (который значительно отличается от результатов любой из двух версий локально).Если я проверю другие входные примеры, результаты снова будут одинаковыми (но не совсем одинаковыми среди разных входных данных)

Можете ли вы посоветовать, что может быть причиной этого.

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