对于您的情况,Conv2D
将非常有用。请参考下面的描述,了解使用Conv2D
的卷积神经网络(CNN)的输入形状。
让我们看看输入形状是什么样子的。CNN的输入数据将看起来像以下图片。我们假设我们的数据是图像集合。
输入形状为 (批量大小, 高度, 宽度, 通道数)
。对于RGB
图像,通道数为3
,对于灰度
图像,通道数为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
,但在拟合数据时,您需要传递一个尺寸为(batch_size, 10, 10, 3)
的4D
数组。由于输入形状参数中没有批量大小值,因此我们可以在拟合数据时选用任何批次大小。
输出形状为(None, 10, 10, 64)
。第一个维度表示批量大小,当前为None
,因为网络无法提前知道批量大小。
注意:
一旦您拟合数据,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
=================================================================
在这里,我已经用batch_input_shape
替换了input_shape
参数。正如名称所示,这个参数会事先询问你批大小,并且在拟合数据时不能提供其他批大小。