ValueError: An operation has `None` for gradient. Please make sure that all of your ops have a gradient defined (i.e. are differentiable). Common ops without gradient: K.argmax, K.round, K.eval.

Q.「kerasで次のErrorがでるときの対処」

A.「原因はlossを計算するときに通過していないlayerが存在すること」

特に分岐型のネットワークを組んだときに発生しやすいです。Classificationタスクのニューラスネットワークを組んで、自己教示学習やAutoencoderで中間層を事前に学習するときに、classificationのlossを設定していないとClassification部分で「勾配が計算できません!」と怒られるわけです。

とはいっても、事前学習のときにはClassification部分を学習せさたくないのどうするか?

こんなときはloss-weightをゼロにしたり、常にゼロをreturnするダミーのloss関数を用意しておきましょう。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください