首页 > 编程知识 正文

分组卷积计算量怎么计算,数组的卷积计算公式

时间:2023-05-03 13:57:00 阅读:286490 作者:3085

import torchimport torch.nn as nn#分组卷积N,C_in,H,W,C_out = 10,4,16,16,4x = torch.randn(N,C_in,H,W)conv = nn.Conv2d(C_in,C_out,3,1,padding=0,bias=False)conv_group = nn.Conv2d(C_in,C_out,3,1,padding=0,bias=False,groups=2)y = conv(x)y_group = conv_group(x)print(y_group.size())#输出通道必须能被组数整除,形状没变,因为代表整体,最后合起来了# print(y.size())print("常规卷积参数大小:{}".format(sum(param.numel() for param in conv.parameters())))#conv.parameters()整个网络参数#for遍历网络层#param.numel()返回元素个数#param.numel() for param in conv.parameters(),列表推导式,返回list,表示每一层参数#几个卷积核,几个偏移量print("分组卷积参数大小:{}".format(sum(param.numel() for param in conv_group.parameters())))"""C_in 变为原来的一半,分组卷积计算量变为原来的1/2分组卷积(Group Convolution)的用途1.减少参数量,分成G组,则该层的参数量减少为原来的1G2.Group Convolution可以看成是结构化稀疏(structured sparse),每个卷积核的尺寸由C∗K∗K变为C/G∗K∗K,可以将其余(C−C/G)∗K∗K的参数视为0,有时甚至可以在减少参数量的同时获得更好的效果(相当于正则)。"""print(list(conv_group.parameters()))"""输入通道为4,每个卷积核有4层,每个卷积核是3*3的矩阵,共有4个3*3的矩阵(第一个核),输出通道为4,共4个卷积核每个核的权重不一样"""

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。