質問: kerasで全結合ニューラルネットの回帰モデルを組んでいます(入力は10次元で出力が1次元)。 また, 損失関数には平均二乗誤差を用いています。 誤差に対する入力の勾配(誤差をL, 入力をxとしたときの dL/dx)を知りたいのですが, kerasでそれを実現できるのでしょうか?
回答: 頂いた回答を参考に解決できました. 直接誤差に対する勾配は得られなかったのですが, 以下の様にして対処できます 1. 入力の出力に対する勾配を得る 2. 出力の誤差関数に対する勾配を得る 今回は回帰モデルであり誤差関数にMSEを使用しています. したがってこの例では`2*(モデルの出力-真の出力)`となります ``` import keras import keras.backend as K model = keras.models.load_model("model_path") get_grad = K.gradients(model.output, model.input) sess = K.get_session() grad_out = sess.run(get_grad[0], feed_dict={model.input: input_x}) # d output / d input pred = model.predict(input_x) grad_loss = 2 * (pred - true_out).reshape(-1, 1) * grad_out # d loss / d input ```