0

我在 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, None, 3)), weights="imagenet", 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)
4

0 回答 0