减少预测概率所需的时间

时间:2018-06-04 12:54:29

标签: python keras prediction

我正在使用带有Tensorflow后端的Keras。一旦我有了模型,我就使用model.predict_proba来预测概率。此预测函数所花费的时间似乎与数组的大小无关,或者更少依赖于它预测的数组的大小。

我可以做些什么来减少这段时间?

首先,我运行循环100次并按预期计算时间

fname_model = folder+"/my_modelbuy_rocbased.h5"
best_model = load_model(fname_model)
best_model.compile(loss='categorical_crossentropy', optimizer='Adam', 
metrics=['acc'])
X_test_orig = pd.read_csv(folder+"/ret_out_20170402.csv",sep=",")
x_test = X_test_orig.as_matrix()
y1=np.array([x_test[1]])
print y1.shape 
t1=datetime.now().strftime("%H:%M:%S.%f")
for i in range(0,1,1):
prob1= best_model.predict_proba(y1)
t2=datetime.now().strftime("%H:%M:%S.%f")   
print "time taken ", t1,t2

**********************************************后运行***********************

时间11:50:53.909226 11:50:54.372596

因此,对于100次预测,所用时间为11:50:54.372596减去11:50:53.909226,大约是463毫秒,这意味着每次预测为4.63毫秒

但是如果我只为一个预测运行循环,如下所示,

$_FILES['photo']['error']

**********************************************后运行***********************

时间为11:54:40.683225 11:54:41.144969

因此,对于1次预测,所花费的时间是11:54:40.683225减去11:54:41.144969,这也是大约440毫秒。

无论呼叫次数多少,模型似乎都会有固定的时间。我怎样才能减少这个?

1 个答案:

答案 0 :(得分:0)

这是预期的,因为您预测单个输入并且计算图(模型)是相同的,因此预测需要相同的时间。就像你期望同一计算的运行时间不同而不会发生。

现在有一种方法可以加速:不是预测单个元素,而是将它们转换为ndarray(样本,功能),只需调用model.predict,它将在批处理中处理并运行并行计算取决于您的后端设置。

另一点是你不需要编译来预测。编译会将损失和优化器操作添加到图表中,如果您只是预测,则不需要该操作。这将减少模型在内存中加载的时间等。