pytorch框架学习第六次作业——nn网络层

1. 深入理解二维卷积,采用手算的方式实现以下卷积操作,然后用代码验证。

在这里插入图片描述
1)采用2个尺寸为33的卷积核对3通道的55图像进行卷积,padding=0, stride=1,dilation=0
其中 input shape = (3, 5, 5),数据如下
kernel size = 3*3, 第一个卷积核所有权值均为1, 第二个卷积核所有权值均为2,
计算输出的feature map尺寸以及所有像素值

flag = 1
# flag = 0
if flag:
    tensor1 = torch.ones(1, 1, 5, 5)
    tensor2 = tensor1 * 2
    tensor3 = tensor1 * 3
    input_tensor = torch.cat([tensor1, tensor2, tensor3], dim=1)
    kernel1 = [[1., 1., 1.],
              [1., 1., 1.],
              [1., 1., 1.]]
    kernel1 = torch.FloatTensor(kernel1).unsqueeze(0).unsqueeze(0)
    kernel1 = torch.cat([kernel1, kernel1, kernel1], dim=1)
    kernel2 = kernel1 * 2
    kernel = torch.cat([kernel1, kernel2], dim=0)
    
    out_conv = nn.functional.conv2d(input_tensor, kernel, padding=1)
    print(out_conv.shape)
    print(out_conv)

在这里插入图片描述

2)接1)题,上下左右四条边均采用padding,padding=1,填充值为0,计算输出的feature map尺寸以及所有像素值
在这里插入图片描述

2. 对lena图进行3333d卷积,提示:padding=(1, 0, 0)

# ================ 3d
# flag = 1
flag = 0
if flag:
    conv_layer = nn.Conv3d(3, 1, 3, padding=(1, 0, 0))
    nn.init.xavier_normal_(conv_layer.weight.data)

    # calculation
    img_tensor.unsqueeze_(dim=2)    # B*C*H*W to B*C*D*H*W
    img_conv = conv_layer(img_tensor)

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Aidanmomo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值