【PyTorch】3.3 nn网络层-卷积层
目录
一、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网络层-卷积层相关推荐
- pytorch —— nn网络层 - 卷积层
目录 1.1d/2d/3d卷积 2.卷积-nn.Conv1d() 2.1 Conv1d的参数说明 2.2 例子说明 3.卷积-nn.Conv2d() 3.1 深入了解卷积层的参数 4.转置卷积-nn. ...
- pytroch学习笔记六:nn网络层——卷积层
通过前面两节的学习,已经知道如何搭建一个网络模型以及搭建模型一个非常重要的类nn.Module和模型容器Containers.搭建网络模型有两个基本的步骤:建立子模块和拼接子模块.建立的子模块就包括卷 ...
- 简单粗暴PyTorch之nn网络层(卷积、池化、线性、激活)
nn网络层 一.卷积层 1.1 卷积概念 1.2 nn.Conv2d 1.3 转置卷积 二.池化层 Pooling Layer 2.1 最大池化nn.MaxPool2d 2.2 平均池化nn.AvgP ...
- Pytorch基础(四)—— 卷积层
一.概念 卷积从数学的角度讲是一种矩阵的运算方法.我们可以用一个卷积核对一个矩阵进行卷积运算,具体运算过程图示可以见pytorch官网. 卷积运算按输入数据的通道数可分为单通道和多通道两种. 单通道是 ...
- Pytorch系列之——nn网络层
卷积层 1d/2d/3d卷积 卷积-nn.Conv2d() 转置卷积-nn.ConvTranspose 1d/2d/3d Convolution 卷积运算:卷积核在输入信号(图像)上滑动,相应位置上进 ...
- Pytorch数据使用列表的卷积层时报错及解决-RuntimeError: Input type (torch.cuda.HalfTensor) and weight type (torch.Floa
文章首发及后续更新:https://mwhls.top/3737.html,无图/无目录/格式错误/更多相关请至首发页查看. 新的更新内容请到mwhls.top查看. 欢迎提出任何疑问及批评,非常感谢 ...
- 11nn网络层-卷积层
一.1d/2d/3d卷积 卷积运算: 卷积核在输入信号(图像)上滑动,相应位置上进行乘加 卷积核: 又称为滤波器,过滤器,可认为是某种模式,某种特征 卷积过程类似于用一个模版去图像上寻找与它相似的区域 ...
- 神经网络卷积层与池化层
学习了李沐--<动手学深度学习>的视频课程,在此对知识点进行整理以及记录动手实践中遇到的一些问题和想法. 首先,我们导入可能用到的包 import torch from torch imp ...
- Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化
Pytorch 学习(6):Pytorch中的torch.nn Convolution Layers 卷积层参数初始化 class Conv1d(_ConvNd):......def __init ...
最新文章
- Android--通话录音
- 十二、进程的同步与互斥
- 设置session失效的几种方法
- RawCode-本身就是实验性的8位类型
- [Leedcode][JAVA][第1014题][最佳观光组合][数组][暴力优化]
- shell for循环1到100_浅谈Linux下shell 编程的for循环常用的6种结构
- Android深度探索第五章总结
- 计算机丢失twitchsdk,修复twitchsdk_32_release.dll
- 【Java面试系列】Java微服务面试题
- win7打开或关闭windows功能 提示“出现错误,并非所有的功能被更改”,管理员权限惹的祸...
- 12306是抢票原理分析-多线程之间实现同步
- python挖掘B站猛男手游公主连结的另类操作!
- int(size)中的size到底神马意思(mysql)
- 清除Windows系统用户密码
- synchronized的偏斜锁,轻量级锁,重量级锁
- LeetCode——面试题 10.11. 峰与谷(JAVA)
- 【Android】Bug:SSL peer shut down incorrectly 的解决方法
- 【译】2021 Go 趋势报告
- 基于模板匹配的目标跟踪法
- 在计算机语言中go是什么意思,作为编程语言,go有什么不同?
热门文章
- 一个免费兑换iPhone X的机会,就这样被你错过了
- 【论文阅读】ReaLiSe:Read, Listen, and See: Leveraging Multimodal Information Helps Chinese Spell Checking
- 2019想脱单?这款Python智能化“天气提醒”程序暖心你的小姐姐!
- 龙珠超·布罗利【MGRT幻之】【720P】剧场版
- 探店通系统源码,短视频矩阵源码,抖音矩阵系统源码。
- Gunicorn配置
- 希沃鸿合文香一体机OPS电脑PC模块原厂预装教育系统镜像ESD打包封装驱动程序下载恢复盘构建
- 三星手机S8曝光或再掀购机热潮
- ModelMap传递数据(简洁)
- RouterOS(ROS)+OpenWRT双软路由配置方法及DNS缓存|UPnP等常用功能拓展