如何测量每个图像预测的执行时间(keras)

时间:2018-03-02 11:45:56

标签: time keras execution predict

我有一个用Keras创建的简单模型,我需要测量每个图像预测的执行时间。现在我就是这样做的:

import { BrowserModule } from '@angular/platform-browser';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { LocationStrategy, HashLocationStrategy } from '@angular/common';

//prime ng needs following modules with browser animation module and froms module

import { PanelModule } from 'primeng/components/panel/panel';
import { ButtonModule } from 'primeng/components/button/button';



import { AppComponent } from './app.component';
import { userModule } from './user/user.module';
import { adminModule } from './admin/admin.module';

// Routing Module
import { AppRoutingModule } from './app.routing';


@NgModule({
  imports: [
      userModule,
      adminModule
    BrowserModule,
    FormsModule,
    BrowserModule,
    AppRoutingModule,
    BrowserAnimationsModule,

    PanelModule,
    ButtonModule
  ],
  declarations: [
    AppComponent,

  ],
  providers: [{
    provide: LocationStrategy,
    useClass: HashLocationStrategy
  }],
  bootstrap: [AppComponent],
  schemas: [CUSTOM_ELEMENTS_SCHEMA]
})
export class AppModule { }

但是我注意到当len(images_test)较小时计算的时间更长。例如,当len(images_test)= 32时,我得到:0.06,当len(images_test)= 1024时,我得到:0.006

是否有"权利"这样做的方法?

1 个答案:

答案 0 :(得分:0)

如果使用TF,似乎没有异步问题
但如果使用pytorch,则会出现异步问题。
在TF中:

start = time.clock() 
result=my_model.predict(images_test)
end = time.clock()

在火炬中

torch.cuda.synchronize()
start = time.clock() 
my_model.predict(images_test)
torch.cuda.synchronize()
end = time.clock()

但是我认为你可以做10次Loop model_predict
并打印time_list
(计算机需要加载keras模型,因此第一次加载的速度比其他时间慢)

在TF中:

pred_time_list=[]
for i in range(10):
    start = time.clock() 
    result=my_model.predict(images_test)
    end = time.clock()
    pred_time_list.appebd( end-start )
print(pred_time_list) 

(打印pred_time_list,您可能会发现时间不正确的原因)
参考:
[1]
https://discuss.pytorch.org/t/doing-qr-decomposition-on-gpu-is-much-slower-than-on-cpu/21213/6
[2]
https://discuss.pytorch.org/t/is-there-any-code-torch-backends-cudnn-benchmark-torch-cuda-synchronize-similar-in-tensorflow/51484/2