pytorch实现分组卷积深度可分离卷积常规卷积:
since用法
常规卷积需要的参数量:Cin×K×K×Cout
分组卷积:
分组卷积需要的计算量 : Cin×K×K×Cout/ g
深度可分离卷积(Depthwi Separable Convolution):
需要的计算量:Cin×K×K+Cout×1×1
实现:
import torch
牛肺能吃吗
from torchsummary import summary
as nn
'''
实现分组卷积demo
如何注销手机卡'''
我的寒假生活英语作文class CRNN(nn.Module):
def __init__(lf,in_channel,out_channel,group):
super(CRNN,lf).__init__()
out_channels=out_channel,
kernel_size=3,
乒乓球比赛规则
stride=1,
padding=1,
groups=group,
bias=Fal)
def forward(lf,input):
out = lf.conv(input)
return out
'''
深度可分离卷积demo
'''
class DEPTHWISECONV(nn.Module):
def __init__(lf,in_ch,out_ch):
super(DEPTHWISECONV, lf).__init__()
lf.depth_conv = nn.Conv2d(in_channels=in_ch,
out_channels=in_ch,
kernel_size=3,
stride=1,
小猴子图片padding=1,
groups=in_ch)
lf.point_conv = nn.Conv2d(in_channels=in_ch,
out_channels=out_ch,
kernel_size=1,
stride=1,
padding=0,
groups=1)
def forward(lf,input):
out = lf.depth_conv(input)
out = lf.point_conv(out)茯苓的性味归经
他人评价return out
if __name__=='__main__':
device = torch.device('cuda' if torch.cuda.is_available() el 'cpu') conv = CRNN(3,6,1).to(device)
print(summary(conv,input_size=(3,32,32)))
dp = DEPTHWISECONV(3,6).to(device)
print(summary(dp,input_size=(3,32,32)))