首页 > 解决方案 > 评估每个输入 keras 的梯度

问题描述

我希望能够访问 keras 神经网络的梯度函数。我希望能够在许多输入值处计算输出相对于输入的梯度。本质上,我希望能够将梯度作为函数进行评估。

model = Sequential()
model.add(Dense(500, activation='relu'))
model.add(Dense(500, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer='adam',  metrics=['accuracy'])
model.fit(x_train, y_train, validation_data=(x_test, y_test), epochs=2, verbose = 1)

现在,我不想评估每个输入的输出,而是评估每个输入的梯度。我怎样才能做到这一点?

这是我尝试过的。

grads = K.gradients(model.output, model.input)
gradient_func = K.function([model.input], [grads[0]])
print(gradient_func([x]))

标签: pythontensorflowkerasneural-network

解决方案


推荐阅读