Tensorflow 卷积层MACC运算计数的理解问题
我有下面的代码来计算卷积层的MACCTensorflow 卷积层MACC运算计数的理解问题,tensorflow,keras,deep-learning,flops,Tensorflow,Keras,Deep Learning,Flops,我有下面的代码来计算卷积层的MACC def count_conv2d(layers, log=False): if log: print(layers.get_config()) #number of conv operations = input_h * input_w / stride = output^2 numshifts = int(layers.output_shape[1] * layers.output_shape[2]) #
def count_conv2d(layers, log=False):
if log:
print(layers.get_config())
#number of conv operations = input_h * input_w / stride = output^2
numshifts = int(layers.output_shape[1] * layers.output_shape[2])
# MAC/convfilter = kernelsize^2 * InputChannels * OutputChannels
MACperConv = layers.get_config()["kernel_size"][0] * layers.get_config()["kernel_size"][1] *
layers.input_shape[3] * layers.output_shape[3]
if layers.get_config()["use_bias"]:
ADD = layers.output_shape[3]
else:
ADD = 0
return MACperConv * numshifts * 2 + ADD
下面列出了文献综述和在线资源中计算MACC操作的公式。我想问一下在上述函数定义中添加的目的是什么
K × K × Cin × Hout × Wout × Cout
谢谢,非常感谢您的帮助。当使用
偏差时,还有一个附加的求和(+)操作。只要卷积层中有滤波器/通道,偏差
向量就很长。在执行卷积运算后,返回结果的每个通道
因此,如果存在偏差(use_bias
为True),那么您也必须计算加法运算(+),并将它们添加到结果中。如果没有使用偏差,则执行0加法运算,因此将0添加到结果中。Hi@AndreaAngeli,为什么我们要在公式中计算加法运算,它不在那里?请你把这件事告诉我好吗?谢谢你的帮助。