当前位置: 首页 > news >正文

神经网络卷积操作

文章目录

    • 一、nn.Conv2d
    • 二、卷积操作原理
    • 三、代码实现卷积操作

一、nn.Conv2d

nn.Conv2d 是 PyTorch 中的一个类,它代表了一个二维卷积层,通常用于处理图像数据。在深度学习和计算机视觉中,卷积层是构建卷积神经网络(CNN)的基本构件,它们能够从图像中提取特征。
二维卷积层 nn.Conv2d 的相关参数:

  • in_channels:输入图像的通道数。例如,对于彩色图像,通常 in_channels 为 3,因为彩色图像有 RGB 三个通道。
  • out_channels:输出特征图的通道数。这个参数决定了卷积层输出的特征图数量,也就是卷积核的数量。
  • kernel_size:卷积核的大小。它是一个元组或整数,指定了卷积核在每个空间维度(高度和宽度)上的尺寸。例如,kernel_size=3
    表示卷积核是 3x3 的。
  • stride:卷积的步长。它指定了卷积核在图像上滑动的间隔。默认值为 1,意味着卷积核每次移动一个像素。
  • padding:填充。它用于在输入图像的边界周围填充零。这通常用于控制输出特征图的空间尺寸。
  • dilation:膨胀。它用于控制卷积核中元素之间的间距,用于增大卷积核的感受野。
  • groups:分组卷积的组数。通过设置这个参数,可以使得卷积层的某些部分不与其他部分的输入或输出相连接,这在某些特定的网络架构中很有用。

二、卷积操作原理

假设输入图像是一个5x5的矩阵,而卷积核是一个3x3的矩阵,通过卷积操作得到结果矩阵
在这里插入图片描述

  • 当卷积步长stride=1,计算方式:

在这里插入图片描述

  • 把卷积核放在输入图像当中,也就是1x1+2x2+1x1+2x1+1x2=10,将得到的答案放在结果的第一个框框里头。

  • 以此类推,进行第二个操作:

在这里插入图片描述

  • 同样第三个操作:

在这里插入图片描述

  • 需要注意的是,卷积核不能出格子,也就是不能像下图操作:
    在这里插入图片描述
  • 在第一行运行结束后,就往下面进行运算:

在这里插入图片描述
以此类推,将卷积核在输入图像中全部运算完成。

三、代码实现卷积操作

import torch
import torch.nn.functional as F
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]])kernel = torch.tensor([[1, 2, 1],[0, 1, 0],[2, 1, 0]])#通过函数reshape进行格式的转换
input = torch.reshape(input,(1, 1, 5, 5))
kernel = torch.reshape(kernel,(1, 1, 3, 3))
#查看转换后的input和kernel格式
print(input.shape)
print(kernel.shape)output = F.conv2d(input, kernel, stride=1)
print(output)

注:因为conv2d的输入格式一定要是(x,y,z,t)4个数字形式,故需要使用reshape函数先进行数据的转换,然后再输入给conv2d当中。

运行结果:
在这里插入图片描述
可以看到输出的矩阵结果跟我们上面计算的结果是一致的。

http://www.lryc.cn/news/433932.html

相关文章:

  • 专题二_滑动窗口_算法专题详细总结
  • 【机器学习-三-无监督学习】
  • JAVA基础:Lambda表达式(上)
  • Vue使用fetch获取本地数据
  • 《酒饮真经》秘籍4,让你的酒场技巧更上一层楼!
  • 回车符与快捷键记录
  • 计算机网络-VRRP工作原理
  • 6.5椒盐噪声
  • CSS样式的引用方式以及选择器使用
  • Python Flask_APScheduler定时任务的正确(最佳)使用
  • Linux命名管道
  • Xinstall助力App全渠道统计,参数传递下载提升用户体验!
  • 【时时三省】(C语言基础)指针进阶 例题4
  • k8s的配置管理
  • JAVA- 多线程
  • 【Qt】解决设置QPlainTextEdit控件的Tab为4个空格
  • elementUI根据列表id进行列合并@莫成尘
  • 基于人工智能的智能安防监控系统
  • 分享从零开始学习网络设备配置--任务6.3 使用基本ACL限制网络访问
  • 数据结构——线性表(静态链表、循环链表以及双向链表)
  • vue3_对接腾讯_实时音视频
  • 一台电脑对应一个IP地址吗?‌探讨两台电脑共用IP的可能性
  • XInput手柄输入封装
  • NodeMCU-ESP8266+flash_download_tool_3.9.7 烧录
  • 首例开源的自动驾驶混合运动规划框架,手握“规划可解释”和“决策准确”两张王牌!
  • 数据结构之红黑树的 “奥秘“
  • 【鸿蒙 HarmonyOS NEXT】使用EventHub进行数据通信
  • 大模型RAG实战|构建知识库:文档和网页的加载、转换、索引与存储
  • 江协科技stm32————11-5 硬件SPI读写W25Q64
  • 网络编程day04(UDP、Linux IO 模型)