卷积神经网络 (CNN) 输入形状

Ham*_*med 4 deep-learning conv-neural-network keras tensorflow

我是 CNN 的新手,我有一个关于 CNN 的问题。我对 CNN 的输入形状(特别是 Keras)有点困惑。我的数据是不同时隙中的二维数据(比如 10X10)。因此,我有 3D 数据。我将把这些数据提供给我的模型来预测即将到来的时间段。因此,我将有一定数量的时隙用于预测(假设有 10 个时隙,到目前为止,我可能有 10X10X10 个数据)。现在,我的问题是我必须将这些数据作为具有 10 个通道的 2D 图像(如 CNN 中的普通数据、RGB 图像)或作为 3D 数据处理。(Keras 中的 conv2D 或 conv3D)。

预先感谢您的帮助。

bsq*_*are 5

在你的情况下,Conv2D会很有用。请参阅以下描述以了解使用 的卷积神经网络 (CNN) 的输入形状Conv2D

让我们看看输入形状的样子。CNN 的输入数据如下图所示。我们假设我们的数据是一组图像。

在此处输入图片说明

输入形状有(batch_size, height, width, channels). 的柜面RGB图像将具有一个信道3和所述greyscale图像将具有一个信道1

我们看下面的代码

import tensorflow as tf
from tensorflow.keras.layers import Conv2D

model=tf.keras.models.Sequential()
model.add(Conv2D(filters=64, kernel_size=1, input_shape=(10,10,3)))
model.summary()
Run Code Online (Sandbox Code Playgroud)

输出:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d (Conv2D)              (None, 10, 10, 64)        256       
=================================================================
Run Code Online (Sandbox Code Playgroud)

认为它看起来像输入形状3D,但是您必须4D在拟合数据时传递一个数组,该数组应该像(batch_size, 10, 10, 3). 由于 input_shape 参数中没有批量大小值,我们可以在拟合数据时使用任何批量大小。

输出形状为(None, 10, 10, 64)。第一个维度表示批量大小,即目前的大小None。因为网络事先不知道批量大小。

Note:拟合数据后,None将被您在拟合数据时提供的批量大小替换。

让我们看看另一个带有batch Size的代码

    import tensorflow as tf
    from tensorflow.keras.layers import Conv2D

    model=tf.keras.models.Sequential()
    model.add(Conv2D(filters=64, kernel_size=1, batch_input_shape=(16,10,10,3)))
    model.summary()
Run Code Online (Sandbox Code Playgroud)

输出:

Model: "sequential_1"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_1 (Conv2D)            (16, 10, 10, 64)          256       
=================================================================
Run Code Online (Sandbox Code Playgroud)

在这里,我input_shapebatch_input_shape. 顾名思义,这个参数会提前询问你的batch size,你不能在拟合数据的时候提供任何其他的batch size。