2017-01-06 8 views
0

私のネットワークには、他の操作の中でも、かなり複雑な量子化レイヤーがあります。tf.tiletf.expand_dims opsです。私のネットワークはうまく訓練していないことに気づいた。いくつかのデバッグ出力を見てみると、この量子化レイヤーの前に完全に接続されたレイヤーは重み付けのグラデーションがゼロになっていることがわかりました(私はこれを決定するのにoptimizer.compute_gradientsを使用しました)。これは、量子化レイヤーがトレーニングで更新されない前に何があったのかを意味しますか?自動勾配をサポートする操作はどれですか?

一般的にどのような操作がグラデーションを通過させるのか、どの操作が通過しないのか把握するにはどうすればよいですか?

LookupError: No gradient defined for operation [...] 

だからあなたの問題はどこか別の場所のようだ:たとえば、tf.tile mentioniedとtf.expand_dimsは、あなたがエラーを取得します、あなたのモデルに勾配のない操作がある場合は勾配がthrough`

答えて

2

を通過させる上記の操作を行います多分、あなたはグラデーションを殺すどこかでゼロによる乗算があります。あなたの問題の本当の理由を見つけるために十分な情報があなたの質問にありません。

編集: 自動勾配をサポートしている操作について質問に直接回答しませんでした。

ドキュメントには記載されていません。ソースコードを確認するか、操作を使用してモデルを最適化しようとしたときにエラーが表示されるかどうかだけ確認できます。

tf.tileおよびtf.expand_dimsには勾配が定義されています。

+0

入力していただきありがとうございます。知っておいてよかった。私は疑問が解決されたと思う。 – fabian789

関連する問題