美文网首页
CNN卷积层的多输入多输出

CNN卷积层的多输入多输出

作者: 小黄不头秃 | 来源:发表于2022-09-04 00:45 被阅读0次

(一)多输入多输出

(1)多输入通道

彩色图像一般是由RGB三个通道组成的。彩色图片一般会有更加丰富的信息。
转变为灰度图像会将信息丢失。

如果有多个通道,每一个通道都有一个卷积核,结果是所有通道卷积结果的和。

(2)多输出通道

无论有多少通道的输入,如果我们希望输出是多维的该怎么办呢?做法是设置多个三维的卷积核,每一个卷积核计算出来的结果作为一个通道。输出通道数,即卷积核的个数是卷积层的另一个超参数。

那为什么要这么做呢?我们可以认为每一个通道识别出来的都是一些特殊的模式。

(3)1*1卷积核

(1,1)的卷积核是一个常用的卷积核,它并不能识别空间信息,它的作用是融合通道。

(二)代码实现

import torch 
from d2l import torch as d2l

def corr2d_multi_in(X, K):
    return sum(d2l.corr2d(x, k) for x,k in zip(X,K))


# 这是多通道输入(2,3,3),单通道输出(2,2),两个核(2,2)
# 一个核对应一个通道
X = torch.tensor([[[0.0, 1.0, 2.0], [3.0, 4.0, 5.0], [6.0, 7.0, 8.0]],
               [[1.0, 2.0, 3.0], [4.0, 5.0, 6.0], [7.0, 8.0, 9.0]]])
K = torch.tensor([[[0.0, 1.0], [2.0, 3.0]], [[1.0, 2.0], [3.0, 4.0]]])

corr2d_multi_in(X, K)
# 计算多个通道的输入输出
def corr2d_multi_in_out(X,K):
    # 现在一个核有多个通道,每一个核的形状是(2, 2, 2),共有三个核(3,2,2,2)
    # 一个卷积核经过一次操作后会得到单通道的输出(2,2)
    # 下面这个操作就是让每一个卷积核得到的一个通道的输出,堆叠起来。(3,2,2)
    return torch.stack([corr2d_multi_in(X,k) for k in K])

# 创建三个卷积核
K = torch.stack((K, K + 1, K + 2), 0)
print(type(K))
# print(K.shape)

corr2d_multi_in_out(X,K)
# 1*1的卷积核
def corr2d_multi_in_out_1x1(X, K):
    c_i,h,w = X.shape
    c_o = K.shape[0]
    # 这里就是将一张图片的高和宽展平成一条直线(3, 3, 3) => (3,9)
    # 剩下(channel_num,input)
    X = X.reshape((c_i,h*w))
    # 把卷积核的高和宽展平成一条直线(2, 3, 1, 1) => (2,3)
    # 剩下(kernel_num, kernnel)
    K = K.reshape((c_o,c_i))
    Y = torch.matmul(K,X)
    print(X.shape,K.shape,Y.shape)
    return Y.reshape((c_o, h, w))

X = torch.normal(0, 1, (3, 3, 3))
K = torch.normal(0, 1, (2, 3, 1, 1))

Y1 = corr2d_multi_in_out_1x1(X, K)
Y2 = corr2d_multi_in_out(X, K)
assert float(torch.abs(Y1 - Y2).sum()) < 1e-6
    

相关文章

  • tensorflow之深度学习-卷积神经网络

    卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT(输入层)-CONV(卷积层)...

  • 卷积神经网络_(1)卷积层和池化层学习

    卷积神经网络(CNN)由输入层、卷积层、激活函数、池化层、全连接层组成,即INPUT-CONV-RELU-POOL...

  • CNN卷积层的多输入多输出

    (一)多输入多输出 (1)多输入通道 彩色图像一般是由RGB三个通道组成的。彩色图片一般会有更加丰富的信息。转变为...

  • CNN详解-基于python基础库实现的简单CNN

    CNN,即卷积神经网络,主要用于图像识别,分类。由输入层,卷积层,池化层,全连接层(Affline层),Softm...

  • cnn-cs231n随手记

    cnn笔记提要 输入层 卷积层(特征提取输入大小:W1 * H1 * D1指定超参数:K:卷积层深度 F:感受野(...

  • 卷积神经网络详解(上)

    卷积层 卷积操作就是用卷积后得到的图组数据重构输入图像,然后作为后续输入我们得到一些数据,作为网络的输入,在CNN...

  • CNN

    利用CNN识别MNIST手写字,很普通的一个例程。输入数据经过卷积层,池化层,卷积层,池化层,全连接层,Softm...

  • Shufflenet V2中的结论

    1 卷积层的输入输出特征通道数对MAC指标的影响。 结论:卷积层的输入和输出特征通道数相等时MAC最小,此时模型速...

  • tf.layers.conv1d

    功能:生成卷积核,对输入层进行卷积,产生输出的tensor。 inputs:输入一个tensor。 filters...

  • 深度卷积神经网在图像分类中的应用---深度综述(1)

    基本的卷积神经网结构由输入层、卷积层、池化层、全连接层及输出层构成。卷积层和池化层一般会取若干个,采用卷积层和池化...

网友评论

      本文标题:CNN卷积层的多输入多输出

      本文链接:https://www.haomeiwen.com/subject/gzvrnrtx.html