如何解决SHAP:force_plot
我正在尝试应用 SHAP 来解释我的深度学习模型。模型如下所示:
def small_model():
n_timesteps=3750
n_features=1
n_outputs=2
ampl_signal = Input(shape=(X_train.shape[1:]))
phase_signal = Input(shape=(X_train_phase.shape[1:]))
#temp = Input(shape=(1,))
#moist = Input(shape=(1,))
#weight = Input(shape=(1,))
concat_signal = Concatenate()([ampl_signal,phase_signal])
x = Sequential()
x.add(Conv1D(128,5,activation='relu',input_shape=(X_train.shape[1:]),kernel_initializer='glorot_normal')) #,input_shape=(None,3750,n_features)
x.add(Conv1D(128,kernel_initializer='glorot_normal'))
x.add(MaxPooling1D(5))
x.add(Conv1D(64,n_features)
x.add(Conv1D(64,kernel_initializer='glorot_normal'))
x.add(GlobalAveragePooling1D())
x.add(Dense(64,activation='relu'))
x.add(Dense(n_outputs,activation='softmax'))
x.compile(loss='sparse_categorical_crossentropy',#sparse_categorical_crossentropy
optimizer='Adam',metrics=['accuracy'])
print(x.summary())
return x
model = small_model()
我现在的问题是,每当我尝试从 SHAP 应用 force_plot
时,我都会得到一个空图形。我准备了以下最小示例:
model.compile(loss='mse',optimizer='adam')
model.summary()
x_train_1 = np.random.randint(0,6249,size=(10,1))
x_train_2 = np.random.randint(0,1))
x_test_1 = np.random.randint(0,1))
#x_test_2 = np.random.randint(0,1))
#x_train_1 = X_train[:10]
#x_train_2 = X_train_phase[:10]
#x_test_1 = X_train[10:20]
explainer = shap.DeepExplainer(model,[x_train_1,x_train_2])
shap_values = explainer.shap_values(x_test_1)
shap.initjs()
shap.force_plot(explainer.expected_value[0],np.concatenate([shap_values[0][0].reshape(1,-1,1),shap_values[1][0].reshape(1,1)],axis=1))
有人可以解释我怎么了。提前致谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。