Что такое FLOP, рассчитанные с помощью tenorflow tf.profile? - PullRequest
0 голосов
/ 11 мая 2018

В последнее время я использую tf.profile для вычисления FLOP ResNet-v1-50. Я получаю 7084572224 (7,08 GFLOPs?). Но в оригинальной статье это 3.8 GFLOPs.

И я выполняю то же самое на VGG-19 и получаю 5628853928 (56,29 GFLOP?), Но его реальная стоимость составляет 19,6 миллиарда FLOP. Обратите внимание, что вся тестовая модель находится в tf.slim.

Мой код выглядит следующим образом:

run_meta = tf.RunMetadata()
im = tf.placeholder(tf.float32, [1, 224, 224, 3])
with arg_scope(resnet_v1.resnet_arg_scope(use_batch_norm=True)):
    ims, endpoints = resnet_v1.resnet_v1_50(im)

print(get_num_of_params(tf.get_default_graph()))
opts = tf.profiler.ProfileOptionBuilder.float_operation()
flops = tf.profiler.profile(tf.get_default_graph(), run_meta=run_meta, cmd='op', options=opts)
print(flops.total_float_ops)

Пожалуйста, кто-нибудь, помогите мне.

1 Ответ

0 голосов
/ 17 мая 2018

Согласно последним 2 строкам на странице 3 оригинальной статьи https://arxiv.org/pdf/1512.03385.pdf, при их расчете учитываются только операции умножения и сложения. Принимая во внимание, что тензор потока дополнительно включает в себя пакетную норму или максимальные операции объединения, relu. Я думаю, что в этом причина разницы.

...