我想能够访问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]))