Как применить сеть внутри цикла без заранее заданных входных значений?

#python #tensorflow #tensorflow2.0 #tf.keras #onnx

Вопрос:

У меня есть модель, обученная Keras TF 2.0, и теперь я хотел бы передать ее кому-нибудь, кто будет использовать ее в качестве черного ящика в коде python. Они будут запускать его на 5 образцах одновременно в цикле. Они не могут знать входные значения перед запуском цикла, приложение должно находиться внутри цикла. Каков эффективный способ обернуть эту модель в функцию черного ящика?

Одним из шагов для повышения эффективности является загрузка модели один раз в начале кода, даже если это нарушает подход «черного ящика».

 from tensorflow.keras.models import load_model
model = load_model(model_file)

def pred_o(in1, in2, batch_size=32):
    import numpy as np
    inputs = np.concatenate([in1,in2.reshape(-1,1)], axis=1)
    scaler_mean_, scaler_scale_ = np.array([ 1., 2.,  3.]), np.array([1., 2., 3.])
    inputs = (inputs - scaler_mean_)/scaler_scale_
    return model.predict(inputs, batch_size=batch_size).ravel() 
 

Полезно ли отключать нетерпеливое выполнение? Перенесите модель, использующую ONNX, в какой-нибудь пакет быстрее при выводе по сравнению с TF?