概述
任务名称
学习网络层中的卷积层,池化层,全连接层和激活函数层
任务简介
学习网络模型中采用的神经网络层,包括卷积层,池化层,全连接层和激活函数层,学会如何区分二维卷积和三维卷积;
详细说明
本节第一部分学习卷积神经网络中最重要的卷积层,了解卷积操作的过程与步骤,同时学会区分一维/二维/三维卷积,最后学习转置卷积(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])
最后
以上就是轻松小懒虫为你收集整理的【深度之眼PyTorch框架班第五期】作业打卡09:学习网络层中的卷积层,池化层,全连接层和激活函数层任务名称任务简介详细说明作业的全部内容,希望文章能够帮你解决【深度之眼PyTorch框架班第五期】作业打卡09:学习网络层中的卷积层,池化层,全连接层和激活函数层任务名称任务简介详细说明作业所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复