Keras model.predict()花费不合理的时间

奥莱·乔纳斯·利亚哈根(Ole Jonas Liahagen)

我正在一个项目中,我们正在使用已编译的keras ANN模型根据接收到的传感器数据对不同位置进行分类。这些数据被连续地馈送到模型,以使其通过后台线程在后台收集数据进行预测。我们遇到了一个问题,即使输入小的数据集,model.predict()也要花费2秒钟才能完成。数据点是每个包含38个浮点数的数组。预测时间似乎不受所提供的行数(最多一定数量)的影响。我们尝试只提供一行,最多提供数百行。经过的时间保持在2秒左右。即使对于较大的数据集,此时间消耗量是否也异常高吗?

如果有帮助:我们的程序正在使用多线程技术,能够从传感器收集数据并对其进行重组,以使其适合模型的预测方法。两个后台程序线程正在后台运行,以收集和重组数据,而主线程正在从已结构化的数据队列中主动选择数据并基于这些数据进行分类。以下是我们根据收集到的数据进行分类的代码:

values = []
rows = 0
while rows < 20:
    val = pred_queue.shift()
    if val != None:
        values.append(val)
        rows += 1
rows = 0
        
values = np.squeeze(values)
start_time = time.perf_counter()
predictions = model.predict(values)
elapsed_time = round(time.perf_counter() - start_time, 2)
print("Predict time: ", elapsed_time)
            
for i in range(len(predictions)):
    print(predictions[i].argmax())
    #print(f"Predicted {classification_res} in {elapsed_time}s!")

代码的一些澄清:
shift()方法返回pred_queue()中的第一个条目。这将是一个由38个float组成的数组,或者是一个None,具体取决于队列是否为空。

有什么可能使这些预测如此缓慢?

编辑
预测时间混乱的原因是我们在编译某些数据之前对其运行了相同的模型。这些数据点是从csv文件中收集的,并放入pandas数据框中,最后传递给预测方法。这些数据不是实时流式传输,但是数据集要大得多,大约有9000行,每行包含38个浮点数。当我们计时时,此预测花费了0.3秒。显然比我们目前的速度快得多!

莱斯库雷尔

你可以尝试使用__call__直接方法,作为该的文档predict方法状态(重点是我的):

计算是分批进行的。此方法专为在大规模输入中的性能而设计。对于适合一批的少量输入,__call__建议直接使用以便更快地执行,例如model(x),或者model(x, training=False)如果您有诸如tf.keras.layers.BatchNormalization在推理过程中表现不同的图层另外,请注意,测试损失不受诸如噪声和压降之类的正则化层的影响。

请注意,您注意到的这种性能下降可能与计算机资源有限这一事实有关。研究CPU使用率,RAM使用率等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Jpeg到Bmp转换花费的时间不合理

分类标签的 Keras model.predict 错误

Keras:单个图像的model.predict

Keras model.predict 总是预测 1

设备花费了不合理的时间来执行其命令

PHPExcel创建电子表格花费的时间不合理

无法在 keras(tensorflow) 中使用 model.predict()

Java Tensorflow + Keras等效于model.predict()

Keras model.predict从训练标签数组给出不同的形状

如何使用 GPU 运行 Keras Model.Predict()

在tf.function中使用tf.keras.model.predict

Keras model.predict - 预期 I = 3,发现 I = 2

Keras - model.predict() 返回列表而不是 numpy 数组

tf.keras.Model.predict和调用返回不同的结果

Keras model.predict,InvalidArgumentError,ConcatOp:输入的尺寸应匹配

Keras-与model.predict()不匹配的数组形状

在Keras模型中为model.predict()输入正确的问题

keras中的model.predict()和model.predict_generator()之间的预测差异

tf.keras.model.fit需要很长时间

多次加载时,keras的“ load_model”时间增加

Keras-model.evaluate()和model.predict()有什么区别

Keras model.evaluate()和model.predict()有什么区别?

不合理的内存使用

model.fit 的不同输出(加载模型后没有训练)和 keras 中的 model.predict

了解keras model.summary()

了解model.summary Keras

Keras model.fit UnboundLocalError

如何使用交叉验证输出中的最佳模型使用keras model.predict()?

在 keras 中,model.predict() 的结果是什么以及加载模型的预测问题