6.2(课后题)转置输入矩阵和转置卷积核得到的结果

import torch
'''6.2 图像卷积 课后题'''
# a:卷积核[1,-1]应用于具有对角线边缘的图像会得到什么结果? 得到的结果还是以对角线为边缘
#%%
X = torch.tensor([[0.0,1.0,2.0],
                  [0.0,0.0,5.0],
                  [0.0,0.0,0.0]])
''' 这个K是让相邻两列相同的像素值求和直接变成0'''
K = torch.tensor([[1.0,-1.0]])
#%%
# 卷积操作函数
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]):
            # (i,j)是目标区域的左上角坐标
            Y[i,j] = (X[i:i+h,j:j+w] * K).sum()
    return Y
print(corr2d(X,K))
tensor([[-1., -1.],
        [ 0., -5.],
        [ 0.,  0.]])
'''b.如果转置X会发生什么'''
corr2d(X.t(),K)
tensor([[ 0.,  0.],
        [ 1.,  0.],
        [-3.,  5.]])
'''c.如果转置K会发生什么?'''
corr2d(X,K.t())
tensor([[ 0.,  1., -3.],
        [ 0.,  0.,  5.]])

你可能感兴趣的:(动手学深度学习(计算机视觉篇),矩阵,深度学习,计算机视觉)