当前位置:   article > 正文

3D卷积,代码实现_卷积dense()

卷积dense()

3D卷积,代码实现
三维卷积:理解+用例-发现
在图像卷积神经网络内核中,包含3D卷积及其在3D MNIST数据集上的实现。

什么是卷积?

从数学上讲,卷积是一种积分函数,表示一个函数g在另一个函数f上移动时的重叠量。

直觉地说,卷积就像一个混合器,将一个函数与另一个函数混合在一起,在保留信息的同时,减少数据空间。

在神经网络和深度学习方面:

卷积是具有可训练参数的滤波器(矩阵/向量),用于从输入数据中提取低维特征。

具有保留输入数据点之间的空间或位置关系的特性。

卷积神经网络增强相邻层神经元之间的局部连接模式,空间局部相关性。

直观地说,卷积是在输入上应用滑动窗口(具有可训练权重的滤波器)的概念,产生(权重和输入的)加权和输出的步骤。加权下一层输入的特征空间。

例如,在人脸识别问题中,前几个卷积层训练输入图像中关键点,下一个卷积层训练边缘和形状,最后一个卷积层训练人脸。在本例中,首先将输入空间缩减为较低维空间(表示关于点/像素的信息),然后将该空间缩减为包含(边/形状)的另一空间,最后缩减对图像中的面进行分类。卷积可以应用于N维。
卷积类型:

让我们来讨论什么是不同类型的卷积

1D Convolutions 一维卷积

最简单的卷积是一维卷积,通常用于序列数据集(也可以用于其它用例)。可用于从输入序列中提取局部一维子序列,并在卷积窗口内识别局部模式。下图显示了如何将一维卷积滤波器应用于序列,获得新特征。一维卷积的其它常见用法见于NLP领域,其中每个句子都表示为一个单词序列。
在这里插入图片描述

2D Convolutions 二维卷积
在图像数据集上,CNN结构中主要使用二维卷积滤波器。二维卷积的主要思想,卷积滤波器在两个方向(x,y)上移动,从图像数据中计算低维特征。输出形状也是一个二维矩阵。
在这里插入图片描述

3D Convolutions 三维卷积
三维卷积对数据集应用三维过滤器,过滤器向3个方向(x,y,z)移动,计算低层特征表示。输出形状是一个三维体积空间,如立方体或长方体。有助于视频、三维医学图像等的目标物检测。不仅限于三维空间,还可以应用于二维空间输入,如图像。

在3D Mnist数据集上实现3D CNN。首先,导入key数据库。
在这里插入图片描述

此外,还有其他类型的卷积:
Dilated Convolutions 膨胀卷积/空洞卷积
扩展或高级卷积定义了内核中值之间的间距。在这种类型的卷积中,由于间距的原因,内核的可接受视图增加,例如,一个3x3内核的膨胀率为2,视野将与5x5内核相同。复杂性保持不变,但在这种情况下会生成不同的特征。

在3D mnist数据集上,创建一个3D卷积神经网络结构。

在这里插入图片描述

from keras.layers import Conv3D, MaxPool3D, Flatten, Dense
from keras.layers import Dropout, Input, BatchNormalization
from sklearn.metrics import confusion_matrix, accuracy_score
from plotly.offline import iplot, init_notebook_mode
from keras.losses import categorical_crossentropy
from keras.optimizers import Adadelta
import plotly.graph_objs as go
from matplotlib.pyplot import cm
from keras.models import Model
import numpy as np
import keras
import h5py

init_notebook_mode(connected=True)
%matplotlib inline

使用 TensorFlow backend后端.
3D MNIST数据以.h5格式给出,将完整的数据集加载到训练集和测试集中。
with h5py.File(’…/input/full_dataset_vectors.h5’, ‘r’) as dataset:
x_train = dataset[“X_train”][:]
x_test = dataset[“X_test”][:]
y_train = dataset[“y_train”][:]
y_test = dataset[“y_test”][:]

观察数据集维度:
print ("x_train shape: ", x_train.shape)
print ("y_train shape: ", y_train.shape)

print ("x_test shape: ", x_test.shape)
print ("y_test shape: ", y_test.shape)
x_train shape: (10000, 4096)
y_train shape: (10000,)
x_test shape: (2000, 4096)
y_test shape: (2000,)

这个数据集是一个平面的一维数据,在一个单独的数据文件中共享了原始的x,y,z。在三维空间中绘制一个数字。旋转三维数字,查看效果。
在这里插入图片描述

现在,在这个数据集上实现一个三维卷积神经网络。为了使用二维卷积,首先将每个图像转换成三维形状:宽度、高度、通道。通道表示红色、绿色和蓝色层的切片。以类似的方式,将输入数据集转换为4D形状,以便使用三维卷积:长度、宽度、高度、通道(r/g/b)。

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/喵喵爱编程/article/detail/979256
推荐阅读
相关标签
  

闽ICP备14008679号