彩色图像具有RGB三通道,因此卷积操作也需要拓展到多通道
当输入包含多个通道时,需要构造一个具有与输入数据相同输入通道数的卷积核,以便与输入数据进行互相关运算。
def corr2d(X,K):
"""互相关运算"""
h,w=K.shape
Y=torch.zeros((X.shape[0]-h+1,X.shape[1]-w+1))
for i in range(Y.shape[0]):
for j in range(Y.shape[1]):
Y[i,j]=(X[i:i+h,j:j+w]*K).sum()
return Y
def corr2d_multi_in(X,K):
"""多通道输入单通道输出"""
return sum(corr2d(x,k) for x,k in zip(X,K))
相较于单通道输出,多通道输出具有多组多输入通道的卷积核,并将每组的输出结果进行拼接
def corr2d_mult_in_out(X,K):
"""多通道输入多通道输出"""
return torch.stack([corr2d_multi_in(X,k) for k in K],0)# 在第一维上连接张量