Python Keras模型值错误:无法挤压尺寸[1],预期尺寸为1,实际尺寸为90

Python Keras模型值错误:无法挤压尺寸[1],预期尺寸为1,实际尺寸为90,python,tensorflow,keras,Python,Tensorflow,Keras,我目前的模式是: # from tensorflow.keras.layers import InputLayer model_training = Sequential() # input_layer = keras.Input(shape=(300,1)) model_training.add(InputLayer(input_shape=(300,1))) model_training.add(Conv1D(filters=32, kernel_size=3, padding='same'

我目前的模式是:

# from tensorflow.keras.layers import InputLayer
model_training = Sequential()
# input_layer = keras.Input(shape=(300,1))
model_training.add(InputLayer(input_shape=(300,1)))
model_training.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='tanh'))
model_training.add(Dropout(0.2))
model_training.add(MaxPooling1D(pool_size=3))
model_training.add(Dropout(0.2))
model_training.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='tanh'))
model_training.add(Dropout(0.2))
model_training.add(MaxPooling1D(pool_size=3))
# model_training.add(Dropout(0.2))
# model_training.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='tanh'))
# model_training.add(Dropout(0.2))
# model_training.add(MaxPooling1D(pool_size=3))
# model_training.add(Dropout(0.2))
# model_training.add(Conv1D(filters=32, kernel_size=3, padding='same', activation='tanh'))
# model_training.add(Dropout(0.2))
# model_training.add(MaxPooling1D(pool_size=3))
# model_training.add(Dropout(0.2))
#model.add(Dropout(0.2))
model_training.add(Flatten())
model_training.add(Dense(90))
model_training.add(Activation('sigmoid'))
model_training.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model_training.summary())
我的健身功能:

model_training.fit(train_data, train_labels, validation_data=(test_data, test_labels), batch_size=32, epochs=15)
当我运行此操作时,会出现此错误:

ValueError: Can not squeeze dim[1], expected a dimension of 1, got 90 for '{{node Squeeze}} = Squeeze[T=DT_FLOAT, squeeze_dims=[-1]](remove_squeezable_dimensions/Squeeze)' with input shapes: [?,90].
有什么想法吗? 我的输出层有90个类,因为总共有90个类要预测

列车和标签的形状如下所示:

(7769, 300, 1)
(7769, 90, 1)

我搞不懂这个问题。感谢您的帮助! 部分模型摘要:


在培训前,请紧扣标签:

train_标签=tf.挤压(train_标签,轴=-1)

看起来标签的形状是个问题。模型将输出一个
(批次,90)
,但您提供的是
(批次,90,1)
。Keras无法挤压尺寸1,因为它的长度为90而不是1。

在培训前挤压标签:

train_标签=tf.挤压(train_标签,轴=-1)

看起来标签的形状是个问题。模型将输出一个
(批次,90)
,但您提供的是
(批次,90,1)
。Keras无法挤压尺寸1,因为它的长度为90而不是1。

这起作用。我挤压了火车标签和测试标签,它成功了。非常感谢。这起作用了。我挤压了火车标签和测试标签,它成功了。非常感谢。