Tensorflow 卷积神经网络(CNN)输入形状
我是CNN的新手,我有一个关于CNN的问题。我对CNN(特别是Keras)的输入形状有点困惑。 我的数据是不同时间段的2D数据(比如10X10)。因此,我有3D数据。 我将把这些数据输入到我的模型中,以预测未来的时隙。因此,我将有一定数量的预测时隙(假设10个时隙,到目前为止,我可能有一个10x10的数据)。 现在,我的问题是,我必须将这些数据处理为10个通道的2D图像(如CNN、RGB图像中的普通数据)或3D数据。(Keras中的conv2D或conv3D)Tensorflow 卷积神经网络(CNN)输入形状,tensorflow,keras,deep-learning,conv-neural-network,Tensorflow,Keras,Deep Learning,Conv Neural Network,我是CNN的新手,我有一个关于CNN的问题。我对CNN(特别是Keras)的输入形状有点困惑。 我的数据是不同时间段的2D数据(比如10X10)。因此,我有3D数据。 我将把这些数据输入到我的模型中,以预测未来的时隙。因此,我将有一定数量的预测时隙(假设10个时隙,到目前为止,我可能有一个10x10的数据)。 现在,我的问题是,我必须将这些数据处理为10个通道的2D图像(如CNN、RGB图像中的普通数据)或3D数据。(Keras中的conv2D或conv3D) 提前感谢您的帮助。对于您的情况,C
提前感谢您的帮助。对于您的情况,
Conv2D
将非常有用。请参考以下说明,了解使用Conv2D
了解卷积神经网络(CNN)的输入形状
让我们看看输入形状是什么样子。CNN的输入数据如下图所示。我们假设我们的数据是一组图像
输入形状有(批次大小、高度、宽度、通道)
。在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()
输出:
Model: "sequential"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 10, 10, 64) 256
=================================================================
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (16, 10, 10, 64) 256
=================================================================
虽然看起来输入形状是3D
,但在拟合数据时必须传递4D
数组,该数组应类似(批量大小,10,10,3)
。由于input_shape参数中没有批大小值,因此在拟合数据时,我们可以使用任何批大小
输出形状为(无、10、10、64)
。第一个维度表示批次大小,目前为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"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d (Conv2D) (None, 10, 10, 64) 256
=================================================================
Model: "sequential_1"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
conv2d_1 (Conv2D) (16, 10, 10, 64) 256
=================================================================
在这里,我将
input\u-shape
参数替换为batch\u-input\u-shape
。顾名思义,此参数将提前询问批量大小,在拟合数据时,您不能提供任何其他批量大小。您最好尝试seq2seq或rnn网络,而不是简单的cnn。我认为seq2seq或rnn在我的情况下不起作用。我更喜欢CNN或CNN-LSTM。谢谢。因为您的数据似乎只有一个颜色通道(不是RGB,只是10×10像素),所以我认为Conv2D应该足够了。如果将颜色通道数设置为1,我认为Conv2D操作实际上可能与Conv3D层执行的操作相同。非常感谢!“这很有帮助。”哈米德,如果我回答了你的问题,你能接受答案并投票表决吗。非常感谢。