Сравнение времени вывода TensorFlow - PullRequest
0 голосов
/ 11 апреля 2020

Я пытаюсь рассчитать время, необходимое TF 2.1 для оценки DNN во время вывода.

Настройка: У меня есть простой пример двух скрытых слоев, 1024 узла на слой ( relu) сеть, построенная с использованием Keras. Моя модель принимает (6,1) массив чисел с плавающей точкой в ​​качестве входных данных и выводит один с плавающей точкой. Я использую процессор с процессором Xeon E5-2650 (я не использую Intel MKL). Я предварительно обучил модель, и на этом этапе я только загружаю ее и использую метод .predict(). Я использую модуль timeit в Python 3.7 для вычисления времени, необходимого для выполнения метода .predict(), и сравниваю его с подробным выводом TF.

Код:

>>> import timeit,time
>>> timeit.timeit(timer=time.time, setup="import tensorflow as tf; import numpy as np; model = tf.keras.models.load_model('myModel'); Input=np.array([0.39866815, 0.01248495, 0.65736947, 0.00752856, 0.72758594, -0.68597523]).reshape(1,6);model.predict(Input)", stmt='model.predict(Input,verbose=1)', number=1)
1/1 [==============================] - 0s 2ms/sample
0.02354288101196289

Короче говоря, timeit сначала выполняет всю инициализацию и первый проход модели (аргумент setup), а затем подсчитывает время, необходимое для выполнения 1 раз аргумента stmt. Однако на выходе TF сообщает 2 мс / сэмпл , а timeit ~ 23 мсек c. Чем это объясняется? Есть ли какие-либо издержки на model.predict, которые не учитываются при измерении TF, но timeit видит их?

...