Как избежать сеанса инициализации при каждом прогнозе при использовании модели tf-hub
Я пошел по пути, описанному в этом посте ( https://colab.research.google.com/drive/1Odry08Jm0f_YALhAt4vp9qa5w8prUzDY), чтобы построить модель с использованием универсального кодировщика предложений. В основном тренировочный процесс
module_url = "https://tfhub.dev/google/universal-sentence-encoder-large/3"
embed = hub.Module(module_url)
def UniversalEmbedding(x):
return embed(tf.squeeze(tf.cast(x, tf.string)), signature="default", as_dict=True)["default"]
input_text = layers.Input(shape=(1,), dtype=tf.string)
embedding = layers.Lambda(UniversalEmbedding, output_shape=(embed_size,))(input_text)
dense = layers.Dense(256, activation='relu')(embedding)
pred = layers.Dense(category_counts, activation='softmax')(dense)
model = Model(inputs=[input_text], outputs=pred)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
model.summary()
with tf.Session() as session:
K.set_session(session)
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())
history = model.fit(train_text,
train_label,
validation_data=(test_text, test_label),
epochs=10,
batch_size=32)
model.save_weights('./model.h5')
Сохраняю модельные веса и надеюсь использовать их позже. Я могу загрузить веса в модель через model.load_weights(self.model_weight_file). Однако каждый раз, когда мне нужно сделать прогноз, мне нужно создать сеанс как
with tf.Session() as session:
K.set_session(session)
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())
predicts = self.model.predict(text)
Инициализация сеанса занимает много времени и дает мне огромные накладные расходы, если мне нужно создавать сеанс для каждого прогноза. Есть ли способ создать сеанс один раз и продолжать использовать его в каждом прогнозе?