多输入单输出通道互相关运算

# 2通道输入,2通道的卷积核(每个通道1个卷积核)
import torch
from d2l import torch as d2l
def corr2d_multi_in(X,K):
    '''
    多输入通道的卷积操作
    Ci通道的输入,Co个Ci通道的卷积核,得到Co通道的输出
    '''
    # 循环次数=通道数,将卷积核应用到对应的输入通道上
    return sum(d2l.corr2d(x,k) for x,k in zip(X,K))

# 验证互相关运算的输出
# !三维数据,第3维才是数据
#输入
#[
#	通道1:[3*3的图片],
#	通道2:[3*3的图片]
#]

#核
#[
#	通道1:[2*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]]])

print(corr2d_multi_in(X,K))
tensor([[ 56.,  72.],
        [104., 120.]])

多输入多输出通道互相关运算

def corr2d_multi_in_out(X,K):
    # c_o个多通道卷积核,循环次数=c_o,结果在第0维堆叠
    return torch.stack([corr2d_multi_in(X,k) for k in K],0)

# +1元素值加法,c_o=3,在第0个维度堆叠,增加第0维
K = torch.stack((K, K+1, K+2), 0)
# c_o=3,3个通道的输出
print(K.shape)
print(corr2d_multi_in_out(X, K))
torch.Size([3, 2, 2, 2])
tensor([[[ 56.,  72.],
         [104., 120.]],

        [[ 76., 100.],
         [148., 172.]],

        [[ 96., 128.],
         [192., 224.]]])

11卷积核,相当于权重(c_o,c_i),输入(c_i,hw)的全连接层,y=wx+b

def corr2d_multi_in_out_1x1(X,K):
    '''
    1*1卷积核
    '''
    c_i,h,w=X.shape
    c_o=K.shape[0]
    X=X.reshape((c_i,h*w))
    # c_0*c_i*1*1,每个通道1个卷积核
    K=K.reshape((c_o,c_i))
    # 数学矩阵乘法
    Y=torch.matmul(K,X)
    return Y.reshape((c_o,h,w))

# mean=0, std=1,3通道的3*3的矩阵
X=torch.normal(0,1,(3,3,3))
# 2个3通道的1*1的卷积核
K=torch.normal(0,1,(2,3,1,1))

Y1=corr2d_multi_in_out_1x1(X,K)
Y2=corr2d_multi_in_out(X,K)
# <1e-6几乎认为相等,因为浮点数是有精度的
assert float(torch.abs(Y1-Y2).sum())<1e-6

query
输入输出和通道数

  • 答:输出要减半的情况下,将通道数量加1倍,多1倍的卷积核,提取更多信息。空间信息减半,把信息存储到更多的输出通道里
  • 答:!多输出通道可以保留更多的空间信息

padding 0

  • 答:0与卷积核相乘为0,结果是偏差(常数),对最终结果没有影响,对计算有影响

bias

  • 答:有用,影响不大

深度图,深度摄像头

  • 答:深度图有4个维度 第1维通道,第2维深度,宽高像素
  • 答:使用3维卷积核

1x1卷积不识别空间信息

  • 答:只看了1个像素,没有看多个像素,没有关注多个像素直接的相关性,没有识别空间信息

可以3x3的卷积和1x1的卷积层叠加,分别进行空间信息检测和信息融合

  • 答:MobileNet,计算量低,将3x3卷积的空间提取信息输出做1x1的信息融合,?

卷积能获取位置信息吗

  • 答:卷积对位置信息很敏感,使用池化层让卷积对位置信息不那么敏感
  • 答:单独使用卷积,要求数据是有方向的,不同的方向是不同的数据,excel不能用来卷积

通道的信息不共享

  • 答:希望每个通道的核学习不同的模式

feature map

  • 答:就是卷积的输出

3d卷积处理视频

  • 答:3d卷积效果比2d卷积好一点,但计算量很大
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐