【深度之眼PyTorch框架班第五期】作业打卡09:学习网络层中的卷积层,池化层,全连接层和激活函数层

任务名称

学习网络层中的卷积层,池化层,全连接层和激活函数层

任务简介

学习网络模型中采用的神经网络层,包括卷积层,池化层,全连接层和激活函数层,学会如何区分二维卷积和三维卷积;

详细说明

本节第一部分学习卷积神经网络中最重要的卷积层,了解卷积操作的过程与步骤,同时学会区分一维/二维/三维卷积,最后学习转置卷积(Transpose Convolution)的由来以及实现方法;

本节第二部分学习池化层,全连接层和激活函数层,在池化层中有正常的最大值池化,均值池化,还有图像分割任务中常用的反池化——MaxUnpool,在激活函数中会学习Sigmoid,Tanh和Relu,以及Relu的各种变体,如LeakyReLU,PReLU, RReLU

作业

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尺寸以及所有像素值

  • 输出的feature map尺寸:(3, 3, 3)
  • 输出的feature map所有像素值:
    第一个卷积核的输出
    在这里插入图片描述
    第二个卷积核的输出
    在这里插入图片描述

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

  • 输出的feature map尺寸:(3, 5, 5)
  • 输出的feature map所有像素值:
    第一个卷积核的输出
    在这里插入图片描述
    第二个卷积核的输出
    在这里插入图片描述

2. 对lena图进行3*3*3的3d卷积

提示:padding=(1, 0, 0)

三维度卷积用到的函数为torch.nn.Conv3d,其参数如下

torch.nn.Conv3d(in_channels, 
                out_channels, 
                kernel_size, 
                stride=1, 
                padding=0, 
                dilation=1, 
                groups=1, 
                bias=True)

对lena图进行3*3*3的3d卷积的代码为:

\# ================ 3d
\# flag = 1
flag = 0
if flag:
    conv_layer = nn.Conv3d(3, 1, (1, 3, 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)

输出为:

卷积前尺寸:torch.Size([1, 3, 1, 512, 512])
卷积后尺寸:torch.Size([1, 1, 1, 510, 510])

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值