我有一个用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
是否有"权利"这样做的方法?
答案 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