Error al verificar el objective: se esperaba que dense_3 tuviera forma (2,) pero se obtuvo una matriz con forma (1,)

Estoy entrenando un modelo de clasificación de sentimientos textuales con múltiples capas de salida en la API funcional de Keras (usando un backend TensorFlow). El modelo toma como entrada una matriz Numpy de valores hash producidos por la función hashing_trick () de la API de preprocesamiento de Keras, y utiliza una lista de matrices Numpy de tags de uso directo binarias como objectives, según las especificaciones de Keras para el entrenamiento de un modelo con múltiples salidas (Consulte la documentación de fit () aquí: https://keras.io/models/model/ ).

Aquí está el modelo, sin la mayoría de los pasos de preprocesamiento:

textual_features = hashing_utility(filtered_words) # Numpy array of hashed values(training data) label_list = [] # Will eventually contain a list of Numpy arrays of binary one-hot labels for index in range(one_hot_labels.shape[0]): label_list.append(one_hot_labels[index]) weighted_loss_value = (1/(len(filtered_words))) # Equal weight on each of the output layers' losses weighted_loss_values = [] for index in range (one_hot_labels.shape[0]): weighted_loss_values.append(weighted_loss_value) text_input = Input(shape = (1,)) intermediate_layer = Dense(64, activation = 'relu')(text_input) hidden_bottleneck_layer = Dense(32, activation = 'relu')(intermediate_layer) keras.regularizers.l2(0.1) output_layers = [] for index in range(len(filtered_words)): output_layers.append(Dense(2, activation = 'sigmoid')(hidden_bottleneck_layer)) model = Model(inputs = text_input, outputs = output_layers) model.compile(optimizer = 'RMSprop', loss = 'binary_crossentropy', metrics = ['accuracy'], loss_weights = weighted_loss_values) model.fit(textual_features, label_list, epochs = 50) 

Aquí está la esencia del seguimiento de errores que este modelo produce:

ValueError: error al verificar el objective: se esperaba que dense_3 tuviera forma (2,) pero que obtuviera una matriz con forma (1,)

Sus numpy arrays (tanto para entradas como para salidas) deben contener una dimensión de lote. Si sus tags tienen actualmente forma (2,) , puede modificarlas para incluir una dimensión de lote de la siguiente manera:

 label_array = label_array.reshape(1, -1)