【深度学习实验】卷积神经网络(一):卷积运算及其Pytorch实现(一维卷积:窄卷积、宽卷积、等宽卷积;二维卷积)

2024-07-30 08:32:44 浏览数 (3)

一、实验介绍

本文主要介绍了卷积运算及其Pytorch实现,包括一维卷积(窄卷积、宽卷积、等宽卷积)、二维卷积。

二、实验环境

本系列实验使用了PyTorch深度学习框架,相关操作如下:

1. 配置虚拟环境

代码语言:javascript复制
conda create -n DL python=3.7 
代码语言:javascript复制
conda activate DL
代码语言:javascript复制
pip install torch==1.8.1 cu102 torchvision==0.9.1 cu102 torchaudio==0.8.1 -f https://download.pytorch.org/whl/torch_stable.html
代码语言:javascript复制
conda install matplotlib
代码语言:javascript复制
 conda install scikit-learn

2. 库版本介绍

软件包

本实验版本

目前最新版

matplotlib

3.5.3

3.8.0

numpy

1.21.6

1.26.0

python

3.7.16

scikit-learn

0.22.1

1.3.0

torch

1.8.1 cu102

2.0.1

torchaudio

0.8.1

2.0.2

torchvision

0.9.1 cu102

0.15.2

三、实验内容

ChatGPT:

卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习模型,广泛应用于图像识别、计算机视觉和模式识别等领域。它的设计灵感来自于生物学中视觉皮层的工作原理。 卷积神经网络通过多个卷积层、池化层全连接层组成。

  • 卷积层主要用于提取图像的局部特征,通过卷积操作和激活函数的处理,可以学习到图像的特征表示。
  • 池化层则用于降低特征图的维度,减少参数数量,同时保留主要的特征信息。
  • 全连接层则用于将提取到的特征映射到不同类别的概率上,进行分类或回归任务。

卷积神经网络在图像处理方面具有很强的优势,它能够自动学习到具有层次结构的特征表示,并且对平移、缩放和旋转等图像变换具有一定的不变性。这些特点使得卷积神经网络成为图像分类、目标检测、语义分割等任务的首选模型。除了图像处理,卷积神经网络也可以应用于其他领域,如自然语言处理和时间序列分析。通过将文本或时间序列数据转换成二维形式,可以利用卷积神经网络进行相关任务的处理。

1. 一维卷积

a. 概念

一维卷积是指在一维输入数据上应用滤波器(也称为卷积核或核)的操作。一维卷积在信号处理、自然语言处理等领域中有广泛的应用。

假设我们有一个长度为n的输入向量和一个长度为m的卷积核。一维卷积的计算过程如下:

  • 将卷积核与输入向量的第一个元素对齐,进行元素相乘并求和。这个求和结果将作为卷积操作的输出值的第一个元素。
  • 将卷积核向右移动一个位置,再次进行相乘求和的操作。重复这个过程,直到卷积核覆盖完整个输入向量。
    • 输出向量的长度将是 M - K 1,其中 M 是输入向量的长度,K 是卷积核的长度。
b. 示例

假设我们有一个输入向量 [1, 1, -1, 1, 1, 1, -1, 1, 1],和一个卷积核[1, -2, 1]。我们可以按照以下步骤进行一维卷积(窄卷积)计算:

  • 第一个元素的计算:(1 * 1) (1 * -2) (-1 * 1) = -2
  • 第二个元素的计算:(1 * 1) (-1 * -2) (1 * 1) = 4
  • 第三个元素的计算:(-1 * 1) (1 * -2) (1 * 1) = -2
  • ………………
c. 分类

卷积的结果按输出长度不同可以分为三类: