3
0

More than 3 years have passed since last update.

Kerasでk-fold cross validation使って学習するときに発生したエラー「ValueError: Tensor must be from the same graph as Tensor」への対応

Posted at

TL;DR

  • 1つのプログラム内で複数のモデルをトレーニングする際、Optimizerのインスタンスはトレーニングごとに新しいインスタンスを作る必要がある

起こったこと

クロスバリデーションなどを使って、1つのプログラム内で複数のモデルをトレーニングする際、学習率やOptimizerなどのハイパーパラメーターを複数の学習で使い回すために変数に保存しておくことがありますが、その際にOptimizerのインスタンスを保存して使いまわそうとしたところ、以下のようなエラーが発生しました。

image.png

対応

複数のトレーニング間でOptimizerのインスタンスを使い回していることが問題のため、トレーニングごとにOptimizerのインスタンスを作り直すことで解決しました。

原因はおそらくAdamなどの適応的に学習率を変化させるOptimizerが、1次モーメントなどの状態を内部に持っているためだと考えられます。

ちなみに損失関数では発生しません。
状態を持っているはずがないのであたりまえといえばあたりまえですが紛らわしいですね。

参考情報

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0