Получите результаты прогнозов от моей обученной модели как можно быстрее (тензорный поток)

В тензорном потоке я хотел бы как можно быстрее получить результаты прогнозов на основе моей обученной модели.

Таким образом, я попробовал несколько комбинаций, которые предлагались ранее, и результат скорости выглядит следующим образом (слева - самый быстрый)

> import tf2 result = model(input) > = import tf1 result = model.predict(input)

Особенно, import tf1 result = model(input) супер быстрее, чем другие методы Однако в tf1, преобразование result tensor к numpy array с использованием ( sess.run() или eval() и другим способом, как №1) очень трудоемкий

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

Я прикрепил свой код. Функция кода, названная «AI_simulation», является функцией обратного вызова.

В коде результат скорости равен ,,

      No.1 -> 4.1 FPS ~3.6 FPS getting slow (I think there is some memory leak)
No.2 -> 1.6 FPS (sess.run() is very time consuming )
No.3 -> 3.9 FPS
No.4 -> 3.8 FPS

№1

      import tensorflow.compat.v1 as tf
tf.disable_eager_execution()
tf.disable_v2_behavior()

sess = tf.Session()
with sess.as_default():

    G_A2B = model_from_json(loded_model_json, custom_objects={'ReflectionPadding3D':ReflectionPadding3D, 'InstanceNormalization':InstanceNormalization})
    G_A2B.load_weights(model_path+'G_A2B_model_epoch_'+str(model_num)+'.hdf5')
    place_holder = tf.compat.v1.placeholder(tf.float32, shape=(1,170,110,110,1))
    G_A2B = G_A2B(place_holder, training=False)

def AI_simulation(AI_input):

    result = sess.run(G_A2B, feed_dict={place_holder: AI_input[np.newaxis, :, :, :, np.newaxis]})
    result = np.squeeze(result)

    return result

№2

      import tensorflow.compat.v1 as tf
tf.disable_eager_execution()
tf.disable_v2_behavior()

sess = tf.Session()
with sess.as_default():

    G_A2B = model_from_json(loded_model_json, custom_objects={'ReflectionPadding3D':ReflectionPadding3D, 'InstanceNormalization':InstanceNormalization})
    G_A2B.load_weights(model_path+'G_A2B_model_epoch_'+str(model_num)+'.hdf5')


def AI_simulation(AI_input):

    result = G_A2B(AI_input[np.newaxis, :, :, :, np.newaxis])
    result = sess.run(result )
    result = np.squeeze(result)

    return result

№ 3

      import tensorflow.compat.v1 as tf
tf.disable_eager_execution()
tf.disable_v2_behavior()

G_A2B = model_from_json(loded_model_json, custom_objects={'ReflectionPadding3D':ReflectionPadding3D, 'InstanceNormalization':InstanceNormalization})
G_A2B.load_weights(model_path+'G_A2B_model_epoch_'+str(model_num)+'.hdf5')
G_A2B.call = tf.function(G_A2B.call, experimental_relax_shapes = True)

def AI_simulation(AI_input):

    result = G_A2B.predict(AI_input[np.newaxis, :, :, :, np.newaxis])
    result = np.squeeze(result)
    return result

№4

      import tensorflow as tf  #tf2

G_A2B = model_from_json(loded_model_json, custom_objects={'ReflectionPadding3D':ReflectionPadding3D, 'InstanceNormalization':InstanceNormalization})
G_A2B.load_weights(model_path+'G_A2B_model_epoch_'+str(model_num)+'.hdf5')
G_A2B.call = tf.function(G_A2B.call, experimental_relax_shapes = True)

def AI_simulation(AI_input):
    result = G_A2B(AI_input[np.newaxis, :, :, :, np.newaxis])
    result = np.squeeze(result.numpy())
    return result

0 ответов

Другие вопросы по тегам