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)。
预先感谢您的帮助。
在你的情况下,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_shape用batch_input_shape. 顾名思义,这个参数会提前询问你的batch size,你不能在拟合数据的时候提供任何其他的batch size。
| 归档时间: |
|
| 查看次数: |
3872 次 |
| 最近记录: |