首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解卷积层MACC运算计数的几个问题

理解卷积层MACC运算计数的几个问题
EN

Stack Overflow用户
提问于 2020-08-28 00:16:48
回答 1查看 148关注 0票数 0

我有以下代码来计算卷积层的MACC。

代码语言:javascript
复制
  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操作的公式如下所示。我想问一下,在上述函数定义中添加的目的是什么?

代码语言:javascript
复制
   K × K × Cin × Hout × Wout × Cout 

谢谢,非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-28 00:27:12

当使用bias时,有一个额外的求和(+)运算。bias矢量与卷积层中的滤波器/通道一样长。执行卷积运算后,对结果的每个通道执行biases are added

因此,如果存在偏差(use_bias为真),则还必须计算加法运算(+),并将它们添加到结果中。如果没有使用偏置,则执行0加法操作,因此将0添加到结果中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63620179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档