用numpy库手写算子五: Depthwise_conv2d

用numpy库手写算子五: Depthwise_conv2d

前言

我们经常可以调用pytorch,tensorflow库等来实现我们的神经网络,但是有的时候需要开发自己的框架,这个时候就得了解每一个算子的计算规则,了解这些计算规则也有助于我们了解他们的计算特性,然后就可以在底层优化上面有一定的针对性。

Depthwise_conv2d

对于一个输入为(n,ic,h,w)的input,其本来的正常的卷积核为(oc,ic,kh,kw)。但是depthwise换成了(ic,1,kh,kw),然后加一个(oc,ic,1,1)的pointwise。之后的pointwise也是相当于正常的卷积。
所以整个的计算过程就是(n,ic,h,w)经过一个(ic,1,kh,kw)变成了一个(n,ic,h_new,w_new)的feature_map,然后再和(oc,ic,1,1)做正常的卷积,就可以得到一个(n,oc,h_new,w_new)的输出,这个输出作为之后的feature_map传递下去。

总体代码

def dwconv_forward_naive(x, w, stride, pad, b = None):
	x = np.pad(x, ((<
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值