我目前正在尝试测量Keras (TF Back)模型进行预测所需的时间。由于时间可能不同,我正在做预测的样本,并计算它们的平均值和样本标准差。代码如下所示:
timekeras = []
for i in range(int(ANALYSIS_SAMPLE_SIZE)):
timedummy = time.time()
predskeras = model.predict ( np.array(test_data_list) )
timekeras.append(time.time() - timedummy)现在我注意到,样本标准差总是大于平均值,这是一些巨大的异常值的迹象。在查看了带有时间度量的列表后,我现在知道第一次预测总是需要大约10倍的时间。我猜算法是以某种方式“记住”,他之前做了完全相同的计算,并使用了一些已经计算的结果?
无论如何,我现在的问题是:在实际的应用场景中,模型不会连续多次做出相同的预测,所以我的测量值似乎没有用,除了第一个。有没有人知道如何多次做同样的预测,但总是好像以前没有做过一样,以便进行有意义的时间测量?一般来说,仅仅是因为我很好奇:有人知道为什么Keras会这样做吗,再次预测所需的时间减少了10倍?
发布于 2020-10-16 18:54:15
我认为你需要在每次预测后清除会话。这样,您将能够在实时上下文中获得预测。
try:
from keras import backend as K
except:
from tensorflow.keras import backend as K
K.clear_session()
tf.reset_default_graph()https://stackoverflow.com/questions/52688997
复制相似问题