CNN卷积过程

目录

1、什么是卷积

2、什么是卷积核

3、什么是卷积层

4、一个卷基层有多少个参数:

5、通道(chennel)怎么理解:

6、几个参数:

7、如何理解权值共享,减少了神经网络需要训练的参数的个数?


最近有一个想法,把基础的东西自己总结一遍,后期有了新的理解不断完善

卷积过程:

                                                                               图(1)

gif理解了,卷积的过程也就理解了;

1、什么是卷积

图像中不同数据窗口的数据卷积核作内积的操作叫做卷积,本质是提取图像不同频段的特征。和图像处理中的高斯模糊核原理一样。

2、什么是卷积核

               图(2)

也称为滤波器filter,带着一组固定权重的神经元,通常是3x3矩阵,一个卷积核的滤波可以用来提取特定的特征(例如可以提取物体轮廓、颜色深浅等),通过卷积层从原始数据中提取出新的特征的过程又成为feature map(特征映射),上图(1)卷积核大小是3X3.,说明下现在卷积核和卷积层之间的概念很模糊了,卷积核和卷积层概念已经混淆。但是还是得说下最准确的说法

3、什么是卷积层

多个滤波器叠加便成了卷积层。上图(1)卷积层大小是3X3x3(CxHxW). C:表示channel,通道的意思

4、一个卷基层有多少个参数

上图(1)卷积层参数是是3X3x3x2(C1xHxWxC2)输入特征通道  x  卷积核H  x  卷积核W  x  输出特征的通道

5、通道(chennel)怎么理解:

通道可以理解为视角、角度。每个chennel表示不同的含义

6、几个参数:

深度depth:卷积层个数,上图(1)2个,决定输出的通道数上图(1)输出通道2个。
步长stride:决定滑动多少步可以到边缘,上图(1)步长为2。

填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。 上图(1)zero-padding  是1

7、如何理解权值共享,减少了神经网络需要训练的参数的个数?

https://blog.csdn.net/lien0906/article/details/51249947这个解释的挺好

 

来自:

https://blog.csdn.net/cheneykl/article/details/79740810

https://www.cnblogs.com/qcloud1001/p/10000106.html

  • 6
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
好的,以下是实现代码和注释: ```python import torch import torch.nn as nn import torch.nn.functional as F class ConvTransformer(nn.Module): def __init__(self, in_channels, out_channels, kernel_size, stride, padding): super(ConvTransformer, self).__init__() # 定义卷积层 self.conv = nn.Conv2d(in_channels, out_channels, kernel_size, stride, padding) # 定义Transformer编码器层 self.encoder_layer = nn.TransformerEncoderLayer(d_model=64, nhead=8) self.transformer_encoder = nn.TransformerEncoder(self.encoder_layer, num_layers=1) # 定义全连接层 self.fc = nn.Linear(out_channels + 64, 10) def forward(self, x, numerical_data): # 卷积操作 x = self.conv(x) # 将卷积结果reshape成为一个二维矩阵,方便输入到Transformer中 x = x.view(x.size(0), x.size(1), -1) # 将数值数据扩展成与卷积结果相同的形状 numerical_data = numerical_data.unsqueeze(-1).repeat(1, 1, x.size(-1)) # 将卷积结果和数值数据按通道拼接 x = torch.cat([x, numerical_data], dim=1) # Transformer编码器层 x = self.transformer_encoder(x) # 将结果reshape回到原来的形状 x = x.view(x.size(0), -1) # 全连接层 x = self.fc(x) return x ``` 该代码实现了一个卷积层和一个Transformer编码器层的结合,用于将图像数据和数值数据进行融合,并将结果输入到全连接层中进行分类。在forward函数中,首先对卷积层进行操作,然后将卷积结果reshape成一个二维矩阵,方便输入到Transformer中。接着将数值数据扩展成与卷积结果相同的形状,并在通道维度上拼接到卷积结果中。然后将结果输入到Transformer编码器层中进行处理,最后将结果reshape回到原来的形状,然后输入到全连接层中进行分类。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值