EfficientNetB0 和 ResNet50 在 CPU/GPU/TPU 上的推理速度测试

问题描述

我已经在 EfficientNetB0 和 ResNet50 上进行了推理速度测试(两者都是 TensorFlow 实现,没有头部并且在 imagenet 权重上进行了预训练)。 考虑到 EfficientNetB0 的参数数量较少(几乎是 1/6),我预计它会更快。但是,在我的小实验中,GPU 并非如此。 我在 Colab 上的 CPU 和 TPU 上对此进行了测试,并且 EfficientNetB0 在这两个硬件上速度更快。对此有什么解释吗?我现在明白,较低的 FLOPS 数量与较低的推理速度没有直接关系,但是否有特定原因导致不同硬件上的速度不同。这是预期的行为吗? 此外,据我所知,如果有人可以分享有关影响推理速度的因素的资源,那就太好了。

from tensorflow.keras.applications import resnet,efficientnet
from tensorflow.keras.layers import Input
import numpy as np 
import time

efficientnetb0 = efficientnet.EfficientNetB0(input_tensor=Input((None,None,3)),weights="imagenet",include_top=False) 
print(efficientnetb0.summary())

resnet50 = resnet.ResNet50(input_tensor=Input((None,include_top=False)
print(resnet50.summary())

t1 = 0 
r_frames = np.random.rand(1,512,800,3).astype(np.float32)
for i in range(1000):
  start_time1 = time.monotonic()
  c = efficientnetb0(r_frames)
  t1 += time.monotonic()-start_time1
print('t1 : ',t1)

t2 = 0 
for i in range(1000):
  start_time2 = time.monotonic()
  c = resnet50(r_frames)
  t2 += time.monotonic()-start_time2
print('t2 : ',t2)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)