各维度卷积神经网络内容收录

各维度卷积神经网络内容收录

卷积神经网络(CNN),通常是指用于图像分类的2D CNN。但是,现实世界中还使用了其他两种类型的卷积神经网络,即1D CNN和3D CNN。

  • 在1D CNN中,内核沿1个方向移动。1D CNN的输入和输出数据是2维的。主要用于NLP领域,时间序列数据。
  • 在2D CNN中,内核沿2个方向移动。2D CNN的输入和输出数据是3维的。主要用于CV领域,图像数据(在视频的处理中,是对每一帧图像分别利用CNN来进行识别,没有考虑时间维度的信息)。

  • 在3D CNN中,内核在3个方向上移动。3D CNN的输入和输出数据是4维的。通常用于3D 图像数据(MRI,CT扫描)。

    气象数据,譬如温度(time,level,lat,lon),既具有时间维又有空间维,那用1D还是2D呢,有的神经网络使用1D CNN,有的2D CNN

    因为是时间序列,RNN序列结构的网络更适合,用1D CNN还是2D CNN, 关键在于:通过数据预处理,将数据处理成适合于1D CNN还是2D

    CNN。此外,气象数据,其有多个时间序列的子特征,因此建议用2D CNN 。

    卷积中:

    维度是指特征矩阵的channel数,例如7x7x256,其深度是256

    通过一个1x1,卷积核个数为64的Conv层,其高和宽保持不变,channel变为64

    所以,降维和升维指的是特征矩阵channel数的降低和增加

    池化中:

    降维是指特征图尺寸的减小,如4x4减小为2x2

    维度包含多种含义,例如在卷积层中,每一层都可以识别一些信息,越往后的信息就叫高维信息

一维CNN | Conv1D

Conv1D广泛应用于感官数据,加速度计 数据就是其中之一。即在Conv1D中,内核沿一维滑动。考虑哪种类型的数据仅需要内核在一个维度上滑动并具有空间特性?时间序列数据,让我们看以下数据。

来自 加速度计 的序列数据

该数据是从人戴在手臂上的 加速度计 中收集的,数据表示XYZ三个轴的加速度。一维CNN可以根据 加速度计 数据执行活动识别任务,例如人的身姿,行走,跳跃等。

此数据有2个维度:第一维是时间步长,第二维是XYZ轴上的加速度值。

下图说明了内核如何在 加速度计 数据上移动,每行代表某个轴的时间序列加速度,内核只能沿时间轴一维移动。

内核在 加速度计 上滑动

python 复制代码
# Keras中的Conv1D层
import keras

from keras.layers import Conv1D

model = keras.models.Sequential()

model.add(Conv1D(1, kernel_size=5, input_shape = (120, 3)))

model.summary()

参数input_shape(120,3)表示120个时间步,每个时间步中有3个数据点。这3个数据点是XYZ轴的加速度,参数kernel_size为5,表示内核的宽

度,内核的高度将与每个时间步中的数据点数相同。同样,一维CNN也可用于音频和文本数据因为我们还可以将声音和文本表示为时间序列数据。

请参考下面的图片,文本数据作为时间序列

二维CNN | Conv2D

在Lenet-5架构中首次引入的标准卷积神经网络,其Conv2D通常用于图像数据,之所以称其为2维CNN,是因为内核在数据上沿2维滑动

内核在图像上滑动

使用CNN的整体优势在于,它可以使用其内核从数据中提取空间特征,而其他网络则无法做到。

例如:CNN可以检测图像中的边缘,颜色分布等 ,这使得CNN网络在图像分类和包含空间属性的其他类似数据中非常强大

python 复制代码
# 以下是在keras中添加Conv2D图层的代码。

import keras

from keras.layers import Conv2D

model = keras.models.Sequential()

model.add(Conv2D(1, kernel_size=(3,3), input_shape = (128, 128, 3)))

model.summary()

参数input_shape(128、128、3)表示图像的(高度,宽度,深度)。参数kernel_size(3,3)表示内核的(高度,宽度),并且内核深度将与图像的深度相同。

三维CNN | Conv3D

在Conv3D中,内核按3个维度滑动,让我们再考虑一下哪种数据类型需要内核在3维上移动?Conv3D主要用于3D图像数据,例如磁共振成像(MRI)数据,MRI数据被广泛用于检查大脑,脊髓,内部器官等。甲计算机断层扫描(CT)扫描也是三维数据,这是通过组合从身体周围的不同角度拍摄的一系列X射线图像创建的一个例子,我们可以使用Conv3D对该医学数据进行分类或从中提取特征。

内核在3D数据上滑动

python 复制代码
# 以下是在keras中添加Conv3D层的代码。
import keras

from keras.layers import Conv3D

model = keras.models.Sequential()

model.add(Conv3D(1, kernel_size=(3,3,3), input_shape = (128, 128, 128, 3)))
         
model.summary()

这里参数Input_shape(128,128,128,3)有4个维度,3D图像是4维数据,其中第四维代表颜色通道的数量,就像平面2D图像具有3维一样,其中3维代表色彩通道。参数kernel_size(3,3,3)表示内核的(高度,宽度,深度),并且内核的第4维与颜色通道相同。

了解更多知识请戳下:

@Author:懒羊羊

相关推荐
浪浪山_大橙子1 小时前
OpenClaw 十分钟快速,安装与接入完全指南 - 推荐使用trae 官方 skills 安装
前端·人工智能
火山引擎开发者社区1 小时前
OpenClaw 快速上手:把云手机变成你的 7×24 小时 AI 手机助手
人工智能
Qlly1 小时前
DDD 架构为什么适合 MCP Server 开发?
人工智能·后端·架构
Lee川1 小时前
从零构建智能对话系统:AI Agent 实战指南
人工智能
冬奇Lab2 小时前
一天一个开源项目(第43篇):Star-Office-UI - 像素风格的 AI 办公室看板,让 AI 助手的工作状态可视化
人工智能·开源·资讯
风象南2 小时前
纯文本模型竟然也能直接“画图”,而且还很好用
前端·人工智能·后端
IT_陈寒2 小时前
Vite vs Webpack:5个让你的开发效率翻倍的实战对比
前端·人工智能·后端
摆烂工程师4 小时前
GPT-5.4 发布!再看 OpenClaw:AI 真正危险的,不是更会聊天,而是开始自己“干活”
人工智能·openai·ai编程
飞哥数智坊12 小时前
分享被迫变直播:AI·Spring养虾记就这样上线了
人工智能
Mr_Lucifer16 小时前
「一句话」生成”小红书“式金句海报(CodeFlicker + quote-poster-generator)
人工智能·aigc·visual studio code