mobilenetv2和卷积网络的理解

卷积网络:

conv = nn.conv2d(input, w, strides=[1, d_h, d_w, 1], padding='SAME')
例如:input.shape为(36,64,64,32)代表36个(64,64)的数据,32个输入通道
当卷积核尺寸为(3,3,32,64)代表64个3233的卷积核同32个输入通道的数据做卷积,然后输出为64个通道
即每个随机卷积同32个数据卷积之后,返回为一个通道,计算量为32*(单一卷积计算量=33h*w)*64
strides=[1,2,2,1]时,结果为(36,32,32,64)
在这里插入图片描述

mobilenetv2网络:

bottleneck_dim=round(expansion_ratio*input.get_shape().as_list()[-1])##round 返回浮点数x的四舍五入的值 net = conv_1x1(input, bottleneck_dim, name='pw', bias=bias) net = relu(net) net = dwise_conv(net, strides=[1, stride, stride, 1], name='dw', bias=bias) net = relu(net) net = conv_1x1(net, output_dim, name='pw_linear', bias=bias)
例如:input.shape为(36,64,64,32)
conv_1x1:表明卷积核尺寸为(1,1,32,out_put), strides=[1,1,1,1] 结果为(36,64,64,out_put)##这里out_put的作用是,扩大输出通道,减少因为刚开始数据低输出通道带来的影响,即V1和V2的区别
dwise_conv:卷积核尺寸为(k,k,out_put,1),strides=[1,2,2,1] 结果为(36,32,32,1)
conv_1x1:卷积核尺寸为(1,1,1,output_dim),strides=[1,1,1,1] 结果为(36,32,32,output_dim)
计算量为:out_put x(64x64x1x1)x32+1*(h x w x k x k)out_put+output_dim x(h x w x 1 x 1)x1
在这里插入图片描述主要是两点:
Depth-wise convolution之前多了一个1
1的“扩张”层,目的是为了提升通道数,获得更多特征;
最后不采用Relu,而是Linear,目的是防止Relu破坏特征。
depthwise的结构https://img-blog.csdn.net/20180123092407142?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMTk5NTcxOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值