当我们说卷积神经网络(CNN)时,通常是指用于图像分类的2维CNN。但是,现实世界中还使用了其他两种类型的卷积神经网络,即1维CNN和3维CNN。在本指南中,我们将介绍1D和3D CNN及其在现实世界中的应用。我假设你已经大体上熟悉卷积网络的概念。

2维CNN | Conv2D

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

使用CNN的整体优势在于,它可以使用其核从数据中提取空间特征,而其他网络则无法做到。例如,CNN可以检测图像中的边缘,颜色分布等,这使得这些网络在图像分类和包含空间属性的其他类似数据中非常强大。

以下是在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)表示核的(高度,宽度),并且核深度将与图像的深度相同。

1维CNN | Conv1D

在介绍Conv1D之前,让我给你一个提示。在Conv1D中,核沿一维滑动。现在让我们考虑哪种类型的数据只需要核在一个维度上滑动并具有空间特性?

答案就是时间序列数据。让我们看一下以下数据。

该数据是从人戴在手臂上的加速度计中收集的。数据表示所有三个轴的加速度。1维CNN可以根据加速度计数据执行活动识别任务,例如人是站着,行走,跳跃等。此数据有2个维度。第一维是时间步长,另外一个是3个轴上的加速度值。

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

以下是在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个数据点是x,y和z轴的加速度。参数kernel_size为5,表示核的宽度,核高度将与每个时间步骤中的数据点数相同。

同样,1维CNN也可用于音频和文本数据,因为我们还可以将声音和文本表示为时间序列数据。请参考下图

Conv1D广泛应用于感官数据,加速度计数据就是其中之一。

3维CNN | Conv3D

在Conv3D中,核按3个维度滑动,如下所示。让我们再想想哪种数据类型需要核在3维上移动?

Conv3D主要用于3D图像数据。例如磁共振成像(MRI)数据。MRI数据被广泛用于检查大脑,脊髓,内部器官等。计算机断层扫描(CT)扫描也是3D数据的示例,它是通过组合从身体周围不同角度拍摄的一系列X射线图像而创建的。我们可以使用Conv3D对该医学数据进行分类或从中提取特征。

以下是在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维与颜色通道相同。

总结

  • 在1D CNN中,核沿1个方向移动。一维CNN的输入和输出数据是二维的。主要用于时间序列数据。
  • 在2D CNN中,核沿2个方向移动。2D CNN的输入和输出数据是3维的。主要用于图像数据。
  • 在3D CNN中,核沿3个方向移动。3D CNN的输入和输出数据是4维的。通常用于3D图像数据(MRI,CT扫描)。

欢迎关注磐创博客资源汇总站:

http://docs.panchuang.net/

欢迎关注PyTorch官方中文教程站:

http://pytorch.panchuang.net/

了解1D和3D卷积神经网络 | Keras的更多相关文章

  1. 硕毕论文_基于 3D 卷积神经网络的行为识别算法研究

    论文标题:基于 3D 卷积神经网络的行为识别算法研究 来源/作者机构情况: 中  国  地  质  大  学(北京),计算机学院,图像处理方向 解决问题/主要思想贡献: 1. 使用张量CP分解的原理, ...

  2. 基于3D卷积神经网络的人体行为理解(论文笔记)(转)

    基于3D卷积神经网络的人体行为理解(论文笔记) zouxy09@qq.com http://blog.csdn.net/zouxy09 最近看Deep Learning的论文,看到这篇论文:3D Co ...

  3. 基于3D卷积神经网络的行为识别:3D Convolutional Neural Networks for Human Action Recognition

    简介: 这是一片发表在TPAMI上的文章,可以看见作者有余凯(是百度的那个余凯吗?) 本文提出了一种3D神经网络:通过在神经网络的输入中增加时间这个维度(连续帧),赋予神经网络行为识别的功能. 相应提 ...

  4. 理解卷积神经网络中的输入与输出形状(Keras实现)

    即使我们从理论上理解了卷积神经网络,在实际进行将数据拟合到网络时,很多人仍然对其网络的输入和输出形状(shape)感到困惑.本文章将帮助你理解卷积神经网络的输入和输出形状. 让我们看看一个例子.CNN ...

  5. 深度学习:Keras入门(二)之卷积神经网络(CNN)

    说明:这篇文章需要有一些相关的基础知识,否则看起来可能比较吃力. 1.卷积与神经元 1.1 什么是卷积? 简单来说,卷积(或内积)就是一种先把对应位置相乘然后再把结果相加的运算.(具体含义或者数学公式 ...

  6. visualization of filters keras 基于Keras的卷积神经网络(CNN)可视化

    https://adeshpande3.github.io/adeshpande3.github.io/ https://blog.csdn.net/weiwei9363/article/detail ...

  7. Keras实现卷积神经网络

    # -*- coding: utf-8 -*- """ Created on Sun Jan 20 11:25:29 2019 @author: zhen "& ...

  8. 【Python】keras卷积神经网络识别mnist

    卷积神经网络的结构我随意设了一个. 结构大概是下面这个样子: 代码如下: import numpy as np from keras.preprocessing import image from k ...

  9. 1.keras实现-->使用预训练的卷积神经网络(VGG16)

    VGG16内置于Keras,可以通过keras.applications模块中导入. --------------------------------------------------------将 ...

随机推荐

  1. HTML笔记06--浮动第一章

    float --浮动 一 1.啥叫浮动? [使元素向左或向右移动,其周围的元素也会重新排列]简言之,就是让盒子并排. 通过float定义浮动 ---------- 未浮动样式代码如下: ------- ...

  2. 改进"尽最大努力交付"的服务

    改进"尽最大努力交付"的服务 网络层的作用就是负责在不同的网段尽力转发数据包,但是负责中专数据包的路由器并不关心数据包的内容和优先顺序.而是先到达的数据包先处理,后到达的数据包排队 ...

  3. Selenium 实现自动下载文件(FirefoxOptions,FirefoxProfile) - 根据Selenium Webdriver3实战宝典

    Firefox 版本是72geckodriver 是 0.24selenium 是3.14 代码中注释有关于FirefoxOptions,FirefoxProfile的解释,请各位寻找一下,不做另外解 ...

  4. Ajax&Json案例

    案例: * 校验用户名是否存在 1. 服务器响应的数据,在客户端使用时,要想当做json数据格式使用.有两种解决方案: 1. $.get(type):将最后一个参数type指定为"json& ...

  5. jvm的运行参数

    1.我们为什么要对jvm做优化? 在本地开发环境中我们很少会遇到需要对jvm进行优化的需求,但是到了生产环境,我们可能将有下面的需求: 运行的应用“卡住了”,日志不输出,程序没有反应 服务器的CPU负 ...

  6. 前后端分离下的跨域CAS请求

    最重要的两点: ajax请求跨域的时候,默认不会携带cookie. 请求分为普通请求(HttpRequest)和Ajax请求(XMLHttpRequest) 先屡一下跨域CAS认证的流程: 前端发起a ...

  7. Python基础-两个乒乓球队进行比赛,各出三人。

    两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人.已抽签决定比赛名单.有人向队员打听比赛的名单.a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单. L1 = [ ...

  8. 机器学习基础——简单易懂的K邻近算法,根据邻居“找自己”

    本文始发于个人公众号:TechFlow,原创不易,求个关注 今天的文章给大家分享机器学习领域非常简单的模型--KNN,也就是K Nearest Neighbours算法,翻译过来很简单,就是K最近邻居 ...

  9. Netty学习(4):NIO网络编程

    概述 在 Netty学习(3)中,我们已经学习了 Buffer 和 Channel 的概念, 接下来就让我们通过实现一个 NIO 的多人聊天服务器来深入理解 NIO 的第 3个组件:Selector. ...

  10. django实战商城项目注册业务实现

    设计到的前端知识 项目的前端页面使用vue来实现局部刷新,通过数据的双向绑定实现与用户的交互,下面来看一下需求,在用户输入内容后,前端需要做一些简单的规则校验,我们希望在在用户输入后能够实时检测,如果 ...