Pytorch深度学习-----神经网络的卷积操作

news2024/11/17 5:59:32

系列文章目录

PyTorch深度学习——Anaconda和PyTorch安装
Pytorch深度学习-----数据模块Dataset类
Pytorch深度学习------TensorBoard的使用
Pytorch深度学习------Torchvision中Transforms的使用(ToTensor,Normalize,Resize ,Compose,RandomCrop)
Pytorch深度学习------torchvision中dataset数据集的使用(CIFAR10)
Pytorch深度学习-----DataLoader的用法
Pytorch深度学习-----神经网络的基本骨架-nn.Module的使用


文章目录

  • 系列文章目录
  • 一、卷积操作是什么?
  • 二、使用步骤(以二维卷积操作CONV2D函数为例)
    • 1.手动运算过程
    • 2.conv2d参数
    • 3.验证第1步的运算


一、卷积操作是什么?

卷积操作是一种线性操作,通常用于处理信号和图像等数据。在图像处理中,卷积操作可以用于提取图像的特征,例如边缘、纹理等
卷积操作是通过卷积核(也称滤波器)与输入数据进行逐元素乘积、求和运算的过程,从而得到卷积特征图。所以卷积操作就是一种运算

二、使用步骤(以二维卷积操作CONV2D函数为例)

1.手动运算过程

如下小土堆图所示
在这里插入图片描述
如下文章所示

在这里插入图片描述

2.conv2d参数

在这里插入图片描述
input:输入矩阵,为tensor型,
weight:卷积核 ,为tensor型,
bias:即误差/偏差值
stride:步长,默认为1
padding:填充大小,默认为0
dilation:控制卷积核之间的间距
groups:控制输入和输出之间的连接
注意:
input中的shape:
minibatch:batch中的样例个数
in_channels:每个样例数据的通道数
iH:每个样例的高(行数)
iW:每个样例的宽(列数)

weight中的shape:
out_channels:卷积核的个数
in_channels/groups:每个卷积核的通道数
kH:每个卷积核的高(行数)
kW:每个卷积核的宽(列数)

3.验证第1步的运算

代码如下:

import torch.nn.functional as F
import torch

# 创建二维矩阵,并为tensor数据类型
input = torch.tensor([[1,2,0,3,1],
                      [0,1,2,3,1],
                      [1,2,1,0,0],
                      [5,2,3,1,1],
                      [2,1,0,1,1]])
# 创建tensor数据类型的卷积核
kernel = torch.tensor([[1,2,1],
                       [0,1,0],
                       [2,1,0]])
# 打印核验看input和kernel的shape是不是有4个数据
print(input.shape)  # torch.Size([5, 5])
print(kernel.shape)  # torch.Size([3, 3])
# 由上面可以知道shape不是4个数据,而是只有h和w的2个数据,故进行reshape
input = torch.reshape(input,(1,1,5,5)) # 表示样例个数1,每一个样例数据的通道数1,高5,宽5
kernel = torch.reshape(kernel,(1,1,3,3))
# 进行conv2d卷积运算
output = F.conv2d(input,kernel,stride=1)  # stride=1即每一次只进行一步移动操作
print(output)
"""
tensor([[[[10, 12, 12],
          [18, 16, 16],
          [13,  9,  3]]]])
"""


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/807379.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

软件外包开发测试管理工具

测试是软件工程中非常重要的一个环节,在上线前必须需要经过严格的测试才能确保上线后软件系统长时间运行。有大量的软件开发和测试管理工具,每一个工具都有自己的特点,今天和大家分享一些常见的工具,希望对大家有所帮助。北京木奇…

STM32 LWIP UDP 一对一 一对多发送

STM32 LWIP UDP通信 前言设置 IP 地址UDP函数配置实验结果单播发送,一对一发送广播发送,一对多发送 可能遇到的问题总结 前言 之前没有接触过网络的通信,工作需要 UDP 接收和发送通信,在网上没有找到一对一、一对多的相关例程&am…

Visual C++中的虚函数和纯虚函数(以外观设计模式为例)

我是荔园微风,作为一名在IT界整整25年的老兵,今天来说说Visual C中的虚函数和纯虚函数。该系列帖子全部使用我本人自创的对比学习法。也就是当C学不下去的时候,就用JAVA实现同样的代码,然后再用对比的方法把C学会。 直接说虚函数…

Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)

星光下的赶路人star的个人主页 毅力是永久的享受 文章目录 1、NoSQL1.1 NoSQL数据库1.1.1 NoSQL是什么1.1.2 NoSQL的特点1.1.3 NoSQL的适用场景1.1.4 NoSQL的不适场景 1.2 NoSQL家族 2、Redis简介2.1 Redis官网2.2 Redis是什么2.3 Redis的应用场景2.3.1 配合关系型数据库做高速…

java复盘

这一题中外部类是Outer。外部类不能直接使用内部类的成员变量和方法,需要内部类的对象来访问他的成员变量和方法。所以该题只是new了一个外部类,内部类无法访问,所以没有输出。 wait后进入等待锁定池,只有针对此对象发出notify或者…

TCP网络通信编程之字节流

目录 【TCP字节流编程】 // 网络编程中,一定是server端先运行 【案例1】 【思路分析】 【客户端代码】 【服务端代码】 【结果展示】 【案例2】 【题目描述】 【注意事项】 【服务端代码】 【客户端代码】 【代码结果】 【TCP字节流编程】 // 网络编程中&a…

list与流迭代器stream_iterator

运行代码: //list与流迭代器 #include"std_lib_facilities.h" //声明Item类 struct Item {string name;int iid;double value;Item():name(" "),iid(0),value(0.0){}Item(string ss,int ii,double vv):name(ss),iid(ii),value(vv){}friend ist…

【计算机视觉 | 图像分割】arxiv 计算机视觉关于图像分割的学术速递(7 月 26 日论文合集)

文章目录 一、分割|语义相关(7篇)1.1 Learning Transferable Object-Centric Diffeomorphic Transformations for Data Augmentation in Medical Image Segmentation1.2 Optical Flow boosts Unsupervised Localization and Segmentation1.3 Spectrum-guided Multi-granularity…

latex论文----写作代码

一般来说论文机构会给定latex模板代码,我们只需要知道怎么写就行,格式机构都给你调好了 1 各类标题 section是最大的标题,后边每一级小标题,都在前边加个sub就行 \section{Method} \subsection{Dataset} \subsubsection{Dataset…

2014年全国硕士研究生入学统一考试管理类专业学位联考写作试题——解析版

2014年1月真题: 四、写作:第56~57小题,共65分。其中论证有效性分析30 分,论说文35分。 56.论证有效性分析: 分析下述论证中存在的缺陷和漏洞,选择若干要点,写一篇600字左右的文章,对该论证的有效性进行分析和评论。…

error: cannot call member function ‘void me::sendMessage()‘ without object

error: cannot call member function void me::sendMessage&#xff08;&#xff09; without object 原因分析解决方案 原因分析 在connect中&#xff0c;传递函数地址不用带括号。&#xff08;参考函数指针的赋值&#xff09; #include <iostream> // 包含头…

redis线程模型

文章目录 一、redis单线程模型1.1 为什么redis命令处理是单线程&#xff0c;而不采用多线程1.2 单线程的局限及redis的优化方式 二、redis单线程为什么这么快2.1 采用的机制2.2 优化的措施 三、redis的IO多线程模型3.1 redis 为什么引入IO多线程模型3.2 配置io-threads-do-read…

安全测试国家标准解读——数据库管理和文件管理

下面的系列文章主要围绕《GB/T 38674—2020 信息安全技术 应用软件安全编程指南》进行讲解&#xff0c;该标准是2020年4月28日&#xff0c;由国家市场监督管理总局、国家标准化管理委员会发布&#xff0c;2020年11月01日开始实施。我们对该标准中一些常见的漏洞进行了梳理&…

SQL-每日一题【1045.买下所有产品的客户】

题目 Customer 表&#xff1a; Product 表&#xff1a; 写一条 SQL 查询语句&#xff0c;从 Customer 表中查询购买了 Product 表中所有产品的客户的 id。 示例&#xff1a; 解题思路 1.题目要求我们 从 Customer 表中查询购买了 Product 表中所有产品的客户的 id。我们可以先…

Memcached服务分布式集群如何实现?

Memcached服务分布式集群如何实现? 在分布式系统中&#xff0c;为了提高可用性、性能和扩展性&#xff0c;通常会使用多台服务器来构建一个Memcached集群。Memcached是一个高性能的分布式内存缓存系统&#xff0c;可以用于缓存数据以减轻数据库或其他后端存储的负载。 以下我们…

网络防御之防病毒网关

1. 什么是恶意软件&#xff1f; 恶意软件是任何软件故意设计造成损害计算机、服务器、客户端或计算机网络&#xff08;相比之下&#xff0c;软件导致无意的伤害由于一些缺陷通常被描述为一个软件错误&#xff09;。各种各样的类型的恶意软件存在的&#xff0c;包括计算机病毒、…

一次性彻底讲透Python中pd.concat与pd.merge

目录 数据拼接&#xff1a;pd.concat数据关联:pd.merge两者区别 数据的合并与关联是数据处理过程中经常遇到的问题&#xff0c;在SQL、HQL中大家可能都有用到 join、uion all 等 &#xff0c;在 Pandas 中也有同样的功能&#xff0c;来满足数据处理需求&#xff0c;个人感觉 …

感谢@中原一点红提供的华为OD机试真题2023Q1 100分“座位调整”,一看nike标志,就稳了

目录 专栏导读一、鸣谢二、题目描述三、输入描述四、输出描述五、思路分析解题思路 六、Java算法源码七、效果展示1、输入2、输出 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷…

【动态规划part12】| 309.买卖股票的最佳时机含冷冻期、714.买卖股票的最佳时机含手续费

目录 &#x1f388;LeetCode309.最佳买卖股票时机含冷冻期 &#x1f388;LeetCode714.买卖股票的最佳时机含手续费 &#x1f388;LeetCode309.最佳买卖股票时机含冷冻期 给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​ 设计一个算法计…