Python Keras中的1D CNN:从汇集特征到密集层的扁平化会引起错误

Python Keras中的1D CNN:从汇集特征到密集层的扁平化会引起错误,python,tensorflow,keras,Python,Tensorflow,Keras,我定义了以下CNN模型。它需要长度为501的1D矢量输入 model = ml.models.Sequential() model.add(ml.layers.Conv1D(filters=NUMBER_OF_FILTERS, kernel_size=KERNEL_SIZE, activation=ACTIVATION, input_shape=(None, 501))) model.add(ml.layers.MaxPooling1D(pool_size=POOL_SIZE, padding=

我定义了以下CNN模型。它需要长度为501的1D矢量输入

model = ml.models.Sequential()
model.add(ml.layers.Conv1D(filters=NUMBER_OF_FILTERS, kernel_size=KERNEL_SIZE, activation=ACTIVATION, input_shape=(None, 501)))
model.add(ml.layers.MaxPooling1D(pool_size=POOL_SIZE, padding='valid'))
model.add(ml.layers.Flatten())
model.add(ml.layers.Dense(HIDDEN_SIZE-1, activation=ACTIVATION))
但这会产生一个值错误:

ValueError: The last dimension of the inputs to `Dense` should be defined. Found `None`.
我不知道为什么Flatte不创建类似
(无,x)
的形状,而是创建
(无,无)
。这里有什么问题吗

这是模型摘要:

Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv1d (Conv1D)              (None, None, 50)          250550    
_________________________________________________________________
max_pooling1d (MaxPooling1D) (None, None, 50)          0         
_________________________________________________________________
flatten (Flatten)            (None, None)              0         
=================================================================
Total params: 250,550
Trainable params: 250,550
Non-trainable params: 0
_________________________________________________________________

我已经想出了解决办法。我没有正确定义Conv1D层的输入形状,它应该是:

model.add(ml.layers.Conv1D(filters=NUMBER_OF_FILTERS, kernel_size=KERNEL_SIZE, activation=ACTIVATION, input_shape=(501, 1)))

我已经想出了解决办法。我没有正确定义Conv1D层的输入形状,它应该是:

model.add(ml.layers.Conv1D(filters=NUMBER_OF_FILTERS, kernel_size=KERNEL_SIZE, activation=ACTIVATION, input_shape=(501, 1)))

Layers Flatten将图像格式从二维数组(a,b)转换为一维数组(aXb)。Layer Pooling输出最大池(MaxPoolig1d)(无,无,50)二维数组(0,0)。因此Layer Flatten:Flatte(展平)(无,无)

图层展平将图像格式从二维数组(a,b)转换为一维数组(aXb)。图层池输出最大池(MaxPoolg1d)(无,无,50)二维数组(0,0)。因此图层展平:展平(展平)(无,无)