在训练backbone为mobilenet的模型的时候,发现训练过程中每个迭代所需要的时间都很长,于是考虑使用测试工具测试每层所需要的时间,来排查原因.
其中caffe自带的net_speed_benchmark工具已经被弃用了
Deprecated. Use caffe time --model=... "
"[--iterations=50] [--gpu] [--device_id=0]
被指明使用caffe的time指令来评估每层时间,如同上面的信息,只需要一个训练网络的prototxt文件,然后程序默认进行50个迭代的前传反传的计算,然后给出平均的每层所需的时间
这里需要设置-gpu,否则默认是使用cpu计算的
第一次我没加-gpu 0的参数,测试mobilenet的时间
平均下来每个forward-backward所需要的时间为2392.66 ms
发现是dwconv相关层的前传和反传所需要的时间都远多于其他层,
conv4_1/3x3_dwconv forward: 28.8052 ms.
conv4_1/3x3_dwconv backward: 59.1912 ms.
使用time --model=... -gpu 0
之后,运行时间明显提高了
Iteration: 1 forward-backward time: 12859.3 ms.
Iteration: 2 forward-backward time: 42.453 ms.
Iteration: 3 forward-backward time: 41.3635 ms.
Iteration: 4 forward-backward time: 39.9391 ms.
Iteration: 5 forward-backward time: 39.9155 ms.
Iteration: 6 forward-backward time: 40.8156 m