tf.keras计算FLOPs
推荐一个好用的包
可以通过pip安装
pip install keras_flops
import tensorflow as tf
from keras_flops import get_flops
import pathlib
import keras.backend as K
# import os
import numpy as np
Mnasnet = tf.keras.Sequential([
tf.keras.layers.InputLayer(input_shape=(224, 224, 3)),
tf.keras.applications.NASNetMobile()
])
# Calculae FLOPS
flops = get_flops(Mnasnet, batch_size=1)
print(f"FLOPS: {flops / 10 ** 9:.03} G")
结果是这样的(太长,只取了部分)
sequential/NASNet/reduction_add_2_reduce_8/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_3_9/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_5_12/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_4_9/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_3_10/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_5_11/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_1_12/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_2_9/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_3_12/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_3_11/add (8.62k/8.62k flops)
sequential/NASNet/normal_add_4_12/add (8.62k/8.62k flops)
sequential/NASNet/predictions/Softmax (5.00k/5.00k flops)
sequential/NASNet/predictions/BiasAdd (1.00k/1.00k flops)
======================End of Report==========================
FLOPS: 1.15 G