目录

一、1d/2d/3d卷积

二、卷积–nn.Conv2d()

1. nn.Conv2d()

2. AlexNet:分组卷积

​3.尺寸计算

4.三维卷积核实现二维卷积

​三、转置卷积–nn.ConvTranspose

1.为何称为转置卷积

2.nn.ConvTranspose2d()

3.尺寸计算


任务简介

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

详细说明

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


一、1d/2d/3d卷积

卷积维度:一般情况下,卷积核在几个维度上滑动,就是几维卷积。

  • 一维卷积
  • 二维卷积
  • 三维卷积

二、卷积–nn.Conv2d()

1. nn.Conv2d()

padding:保持输入输出的图像尺寸不变

dilation:常用于图像分割

groups:常用于模型轻量化

2. AlexNet:分组卷积

3.尺寸计算

代码: 

import os
os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
import torch.nn as nn
from PIL import Image
from torchvision import transforms
from matplotlib import pyplot as plt
path_tools = os.path.abspath(os.path.join(BASE_DIR, "..", "..", "tools", "common_tools.py"))
assert os.path.exists(path_tools), "{}不存在,请将common_tools.py文件放到 {}".format(path_tools, os.path.dirname(path_tools))import sys
hello_pytorch_DIR = os.path.abspath(os.path.dirname(__file__)+os.path.sep+".."+os.path.sep+"..")
sys.path.append(hello_pytorch_DIR)from tools.common_tools import transform_invert, set_seedset_seed(2)  # 设置随机种子# ================================= load img ==================================
path_img = os.path.join(os.path.dirname(os.path.abspath(__file__)), "lena.png")
img = Image.open(path_img).convert('RGB')  # 0~255# convert to tensor
img_transform = transforms.Compose([transforms.ToTensor()])
img_tensor = img_transform(img)
img_tensor.unsqueeze_(dim=0)    # C*H*W to B*C*H*W# ================================= create convolution layer ==================================# ================ 2d
flag = 1
# flag = 0
if flag:conv_layer = nn.Conv2d(3, 1, 3)   # input:(i, o, size) weights:(o, i , h, w)nn.init.xavier_normal_(conv_layer.weight.data)# calculationimg_conv = conv_layer(img_tensor)# ================ transposed
# flag = 1
flag = 0
if flag:conv_layer = nn.ConvTranspose2d(3, 1, 3, stride=2)   # input:(i, o, size)nn.init.xavier_normal_(conv_layer.weight.data)# calculationimg_conv = conv_layer(img_tensor)# ================================= visualization ==================================
print("卷积前尺寸:{}\n卷积后尺寸:{}".format(img_tensor.shape, img_conv.shape))
img_conv = transform_invert(img_conv[0, 0:1, ...], img_transform)
img_raw = transform_invert(img_tensor.squeeze(), img_transform)
plt.subplot(122).imshow(img_conv, cmap='gray')
plt.subplot(121).imshow(img_raw)
plt.show()

输出:

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

随机种子为1时:

随机种子为2时:

随机种子为3时:

4.三维卷积核实现二维卷积

三、转置卷积–nn.ConvTranspose

卷积核:K4*16。16:卷积核3*3周围补0即为16;4:输出图像大小。

1.为何称为转置卷积

卷积核:K16*4。4:卷积核3*3,但最多只有4个权值与图像相乘,故采用剔除的方法从9个权值中挑选对应的4个,16:输出图像的大小。

仅仅是形状转置,但权值不同,即正常卷积和转置卷积是不可逆的。

2.nn.ConvTranspose2d()

3.尺寸计算

代码: 

# ================ transposed
flag = 1
# flag = 0
if flag:conv_layer = nn.ConvTranspose2d(3, 1, 3, stride=2)   # input:(i, o, size)nn.init.xavier_normal_(conv_layer.weight.data)# calculationimg_conv = conv_layer(img_tensor)

输出:

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

【PyTorch】3.3 nn网络层-卷积层相关推荐

  1. pytorch —— nn网络层 - 卷积层

    目录 1.1d/2d/3d卷积 2.卷积-nn.Conv1d() 2.1 Conv1d的参数说明 2.2 例子说明 3.卷积-nn.Conv2d() 3.1 深入了解卷积层的参数 4.转置卷积-nn. ...

  2. pytroch学习笔记六:nn网络层——卷积层

    通过前面两节的学习,已经知道如何搭建一个网络模型以及搭建模型一个非常重要的类nn.Module和模型容器Containers.搭建网络模型有两个基本的步骤:建立子模块和拼接子模块.建立的子模块就包括卷 ...

  3. 简单粗暴PyTorch之nn网络层(卷积、池化、线性、激活)

    nn网络层 一.卷积层 1.1 卷积概念 1.2 nn.Conv2d 1.3 转置卷积 二.池化层 Pooling Layer 2.1 最大池化nn.MaxPool2d 2.2 平均池化nn.AvgP ...

  4. Pytorch基础(四)—— 卷积层

    一.概念 卷积从数学的角度讲是一种矩阵的运算方法.我们可以用一个卷积核对一个矩阵进行卷积运算,具体运算过程图示可以见pytorch官网. 卷积运算按输入数据的通道数可分为单通道和多通道两种. 单通道是 ...

  5. Pytorch系列之——nn网络层

    卷积层 1d/2d/3d卷积 卷积-nn.Conv2d() 转置卷积-nn.ConvTranspose 1d/2d/3d Convolution 卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进 ...

  6. Pytorch数据使用列表的卷积层时报错及解决-RuntimeError: Input type (torch.cuda.HalfTensor) and weight type (torch.Floa

    文章首发及后续更新:https://mwhls.top/3737.html,无图/无目录/格式错误/更多相关请至首发页查看. 新的更新内容请到mwhls.top查看. 欢迎提出任何疑问及批评,非常感谢 ...

  7. 11nn网络层-卷积层

    一.1d/2d/3d卷积 卷积运算: 卷积核在输入信号(图像)上滑动,相应位置上进行乘加 卷积核: 又称为滤波器,过滤器,可认为是某种模式,某种特征 卷积过程类似于用一个模版去图像上寻找与它相似的区域 ...

  8. 神经网络卷积层与池化层

    学习了李沐--<动手学深度学习>的视频课程,在此对知识点进行整理以及记录动手实践中遇到的一些问题和想法. 首先,我们导入可能用到的包 import torch from torch imp ...

  9. Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化

    Pytorch 学习(6):Pytorch中的torch.nn  Convolution Layers  卷积层参数初始化 class Conv1d(_ConvNd):......def __init ...

最新文章

  1. Android--通话录音
  2. 十二、进程的同步与互斥
  3. 设置session失效的几种方法
  4. RawCode-本身就是实验性的8位类型
  5. [Leedcode][JAVA][第1014题][最佳观光组合][数组][暴力优化]
  6. shell for循环1到100_浅谈Linux下shell 编程的for循环常用的6种结构
  7. Android深度探索第五章总结
  8. 计算机丢失twitchsdk,修复twitchsdk_32_release.dll
  9. 【Java面试系列】Java微服务面试题
  10. win7打开或关闭windows功能 提示“出现错误,并非所有的功能被更改”,管理员权限惹的祸...
  11. 12306是抢票原理分析-多线程之间实现同步
  12. python挖掘B站猛男手游公主连结的另类操作!
  13. int(size)中的size到底神马意思(mysql)
  14. 清除Windows系统用户密码
  15. synchronized的偏斜锁,轻量级锁,重量级锁
  16. LeetCode——面试题 10.11. 峰与谷(JAVA)
  17. 【Android】Bug:SSL peer shut down incorrectly 的解决方法
  18. 【译】2021 Go 趋势报告
  19. 基于模板匹配的目标跟踪法
  20. 在计算机语言中go是什么意思,作为编程语言,go有什么不同?

热门文章

  1. 一个免费兑换iPhone X的机会,就这样被你错过了
  2. 【论文阅读】ReaLiSe:Read, Listen, and See: Leveraging Multimodal Information Helps Chinese Spell Checking
  3. 2019想脱单?这款Python智能化“天气提醒”程序暖心你的小姐姐!
  4. 龙珠超·布罗利【MGRT幻之】【720P】剧场版
  5. 探店通系统源码,短视频矩阵源码,抖音矩阵系统源码。
  6. Gunicorn配置
  7. 希沃鸿合文香一体机OPS电脑PC模块原厂预装教育系统镜像ESD打包封装驱动程序下载恢复盘构建
  8. 三星手机S8曝光或再掀购机热潮
  9. ModelMap传递数据(简洁)
  10. RouterOS(ROS)+OpenWRT双软路由配置方法及DNS缓存|UPnP等常用功能拓展