温馨提示:本文翻译自stackoverflow.com,查看原文请点击:tensorflow - Convolutional Neural Network (CNN) input shape
conv-neural-network deep-learning keras tensorflow

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

发布于 2020-04-29 10:45:59

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

预先感谢您的帮助。

查看更多

提问者
Hamed
被浏览
10
Veeru 2020-04-07 18:52

对您而言,Conv2D将很有用。请参阅以下说明,以了解使用的卷积神经网络(CNN)的输入形状Conv2D

让我们看看输入形状如何。CNN的输入数据如下图所示。我们假设我们的数据是图像的集合。

在此处输入图片说明

输入形状有(batch_size, height, width, channels)如果RGB图像的通道为3greyscale图像的通道为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()

输出:

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

以为输入形状看起来很像3D,但是4D在拟合数据时必须传递一个数组(batch_size, 10, 10, 3)由于input_shape参数中没有批量大小值,因此在拟合数据时可以采用任何批量大小。

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

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

让我们看看另一个具有批处理大小的代码

    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()

输出:

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

在这里,我用替换了input_shape论点batch_input_shape顾名思义,此参数将事先询问您批量大小,并且在拟合数据时您不能提供任何其他批量大小。