«В реестре LookupError: gradient нет записи для: shap_TensorListStack», используя DeepExplainer для модели Keras

#tensorflow #keras #shap

#tensorflow #keras #shap

Вопрос:

Я получаю следующую ошибку при использовании DeepExplainer для последовательной модели Keras для многоклассовой классификации текста. Пожалуйста, найдите подробности ниже:

##KERAS ВЕРСИЯ: 2.4.3.

##МОДЕЛЬ

 model = Sequential()
model.add(InputLayer (input_shape= (max_len ,)))
model.add(Embedding (vocab_size  1 , embed_dim , input_length= max_len, weights[embed_matrix]))
model.add(LSTM (LSTM_unit , dropout= dropouts, recurrent_dropout=dropouts,return_sequences=False))
model.add(Dense (6 , activation="softmax"))
##DEEPEXPLAINER

explainer = shap.DeepExplainer(model, X_train[:100], learning_phase_flags = None)
shap_values = explainer.shap_values(X_test[:10])
  

ОШИБКА

 LookupError: gradient registry has no entry for: shap_TensorListStack
  

Пожалуйста, помогите мне с решением этой проблемы. Я перепробовал все возможные решения, представленные в проблемах, упомянутых в репозитории, но не смог устранить эту ошибку.

С наилучшими пожеланиями, Мегна Гоял

Ответ №1:

Эта ошибка связана с используемым вами пакетом «shap». Для работы требуется определенный набор пакетов:

  • TensorFlow 1.14
  • Python 3.7
  • Protobuf 3.20
  • h5py 2.10
     import tensorflow as tf
    import sys
    import google.protobuf
    import h5py
    
    assert tf.__version__ == '1.14.0'
    assert sys.version_info[0] == 3 and sys.version_info[1] == 7
    assert google.protobuf.__version__ == '3.20.0'
    assert h5py.__version__ == '2.10.0'
  

Ссылка: https://github.com/slundberg/shap/issues/1490#issuecomment-1368185975