使用Keras加快模型评估的速度

时间:2019-07-28 12:43:34

标签: machine-learning keras deep-learning hyperopt hyperas

我想在验证数据上检索模型速度的指标,以便比较不同的参数及其对速度的影响。例如,每批花费在验证数据上的时间。或者,由于我使用hyperopt,因此每次迭代/试用所花的时间,以及验证数据上的时间。

是否可以通过带有validation_split> 0,predict()或evaluate()的fit()的输出或hyperopt中的Trials的属性来做到这一点?

如果没有,我想我必须在代码中放入时间里程碑,但这对我来说并不理想。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过在每个评估批末尾调用的自定义回调中记录批处理时间来实现此目的。看起来像这样:

from keras.callbacks import Callback
import time

class BatchTimeCallback(Callback):
    def on_train_begin(self, logs={}):
        self.batch_times = []

    def on_batch_end(self, batch, logs={}):
        self.batch_times.append(time.time())

batch_time_callback = BatchTimeCallback()

...

model.evaluate(..., callbacks=[batch_time_callback])

print(batch_time_callback.batch_times)

请注意最新版本(2.2.4)不支持,因此您必须使用master分支。