#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.