kerasで入力に対する勾配を得るにはどうすればよいですか?

投稿者: Anonymous

kerasで全結合ニューラルネットの回帰モデルを組んでいます(入力は10次元で出力が1次元)。
また, 損失関数には平均二乗誤差を用いています。

誤差に対する入力の勾配(誤差をL, 入力をxとしたときの dL/dx)を知りたいのですが, kerasでそれを実現できるのでしょうか?

解決

同様の質問は以下かと思います。
https://stackoverflow.com/questions/53649837/how-to-compute-loss-gradient-w-r-t-to-model-inputs-in-a-keras-model

これによると backend functions を使えというようなことが記載されていました。
backend functions については以下に記載がありました。

https://keras.io/backend/#using-the-abstract-keras-backend-to-write-new-code

これによると keras には abstract Keras backend API というものがありこれを通してバックエンドの関数を呼び出せるようです。
tensorflow をバックエンドとしているならこのAPIを使用することにより、直接 tensorflow の関数を呼び出せるということだと思います。
この API を Backend functions と呼ぶのだと思います。

Backend functions の一覧は以下に記載されています。
https://keras.io/backend/#backend-functions

この中に

gradients

keras.backend.gradients(loss, variables)
Returns the gradients of loss w.r.t. variables.

Arguments

loss: Scalar tensor to minimize.
variables: List of variables.

Returns

A gradients tensor.

というものがありますので、これを使用すればよいかと思います。
解決いたしましたら、後学のためサンプルコードをあげていただくと幸いです。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *