pytorch卷积层中通道的理解以及实例

一、定义

  • Channels:表示输入数据的通道数,也就是特征图的深度。对于彩色图像,通常有三个通道(红、绿、蓝),分别对应于图像的不同颜色通道。对于灰度图像,通常只有一个通道。对于其他类型的数据,通道数可能会根据具体情况而不同。【明确说就是特征,只不过在输入的彩色图像中是RGB三通道,颜色也可算作是通道,经过卷积后输出的通道可以是边缘、纹理、形状、物体部分等,而不仅仅局限于输入图像的颜色信息。】

二、同一个卷积层中输入的通道和输出的通道数目要一致吗?

  • 在传统的卷积操作中,输入通道数和输出通道数通常是相等的。这意味着每个卷积核都与输入数据的所有通道进行卷积操作,并产生一个输出通道。这种情况下,输出的特征图的深度(通道数)与卷积核的数量相等。 然而,并不是所有的卷积操作都要求输入通道数和输出通道数相等。在一些特殊的网络架构中,例如使用跨通道卷积操作的网络结构,输出通道数可能与输入通道数不同。跨通道卷积操作是一种用于增加网络表达能力的技巧,它允许卷积核的通道数与输入通道数不同,从而使得每个卷积核可以对输入数据的所有通道进行不同的处理。总的来说,在绝大多数情况下,卷积层的输入通道数和输出通道数是相等的。这样做有助于保持特征图的维度一致性,并且利用每个卷积核对输入数据的所有通道进行联合处理,从而提取更加丰富和复杂的特征信息。
    例如:
class conv(nn.module):
    def __int__(self):
        super(conv,self).__init()
        self.conv1 = Conv2d(in_channel = 3,out_channel = 6,kernel_size=3,strid=1,padding=0)
        #定义的input通道为3 output通道为6

    def forward(self,x):
        x = self.conv1(x)
        return x
        
writer = SummaryWriter('./logs')
step = 0
for data in dataload:
    imgs,targets = data
    output = conv(imgs)
    writer.add_image("input",imgs,step)
    writer.add_image("output",output,step)#此处会报错,由于输入和输出的通道数不一样
    step = step+1

三、总结
本次问题来源于B站小土堆pytorch入门-神经网络-卷积层,代码也是视频中提供的例子。完整可运行代码如下所示:

import torchvision
from torch import nn
from torch.nn import Conv2d
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter

dataset = torchvision.datasets.CIFAR10('./data',train=False,transform=torchvision.transforms.ToTensor()
                                       ,download=True)
dataload = DataLoader(dataset,batch_size=64)

class conv(nn.Module):
    def __init__(self):
        super(conv,self).__init__()
        self.conv1 = Conv2d(in_channels = 3,out_channels = 3,kernel_size=3,stride=1,padding=0)

    def forward(self,x):
        x = self.conv1(x)
        return x

use_conv = conv()

writer = SummaryWriter('./logs')
step = 0
for data in dataload:
    imgs,targets = data
    output = use_conv(imgs)
    writer.add_images("input",imgs,step)
    writer.add_images("output",output,step)
    step = step+1

最后使用tensorboard显示出来结果,在pycharm的terminal中输入:

tensorboard --logdir=logs

显示结果:

在这里插入图片描述

这中间还有很多容易出现的错误,例如【AssertionError: Input tensor input format are different】是由于writer.add_image和writer.add_images之间的区别。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值