当尝试:
model_training.fit(X_train, Y_train, validation_data=(X_test, Y_test), epochs=100)
我得到这个错误:
将形状为(25000,2)的目标数组传递给形状为(None, 3,2)的输出,同时使用损耗为binary_crossentropy
。此损失期望目标具有与输出相同的形状。
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_training.add(LSTM(300, dropout=0.2, recurrent_dropout=0.2))
#model.add(Dropout(0.2))
model_training.add(Dense(2))
model_training.add(Activation('sigmoid'))
model_training.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
print(model_training.summary())
X_train shape: (25000, 300)Y_train形状:(25000,2)
model_training.add(Flatten())
这为我修复了它。需要将数据扁平化以匹配输出。