шап.DeepExplainer выдает ошибку, связанную со слоем GlobalMaxPooling1D CNN

#python #tensorflow #conv-neural-network #shap

Вопрос:

Я получаю ошибку, как показано ниже, всякий раз, когда я хочу объяснить классификатор CNN с помощью SHAP для анализа настроений:

 InvalidArgumentError: Incompatible shapes: [100,128] vs. [100,46,128]  [[{{node gradients/global_max_pooling1d/Max_grad/truediv_1}}]]  

Это мой код для CNN:

 inputs = Input(shape=(max_length,), dtype=tf.int32) embedded_sequences = Embedding(max_features, embedding_dims)(inputs)  out = Conv1D(filters,  kernel_size,  padding='valid',  activation='relu',  strides=1)(embedded_sequences)  out = Dropout(0.4)(out) out = GlobalMaxPooling1D()(out) out = Dense(hidden_dims, activation='relu')(out) out = Dropout(0.4)(out) outputs = Dense(1, activation='sigmoid')(out)  model = Model(inputs=inputs, outputs=outputs)  model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])  

И это мой код для ШАПА:

 shap.explainers._deep.deep_tf.op_handlers["AddV2"] = shap.explainers._deep.deep_tf.passthrough explainer = shap.DeepExplainer(model_lstm, train_padded[:100])  # error appears at this line: shap_values = explainer.shap_values(test_padded[:20])   

Ответ №1:

Вам нужно убедиться, что ваши партии имеют одинаковый размер и делятся на 4.

Комментарии:

1. что именно вы имеете в виду, пожалуйста? Я использую размер пакета=256.