2016-07-11 1 views
1

max-poolingで自動判別エラーが発生します。私は入力画像のconvnet出力のグラディエントを使用して画像を入力し、グラデーションに基づいて画像を更新してから、画像をネットワークに戻します(敵対的な画像を考えてください)。したがって、これには勾配の扱いが煩雑になるため、このエラーが発生します。最大プールグラジエントエラー(Tensorflow 0.9rc0)

LookupError: No gradient defined for operation 'gradients/MaxPool_grad/MaxPoolGrad' (op type: MaxPoolGrad) 

回避方法はありますか?

答えて

3

エラーメッセージに示されているように、TensorFlowのMaxPoolGradオペレーションには、対応するグラジエント機能がTensorFlowのバージョン0.9として実装されていません。

具体的には、Python関数tf.gradientsはこれまで構築された計算のグラフを歩いて逆方向自動微分を実行します。操作タイプがFooのノードに出会うと、内部レジストリで対応する勾配関数をルックアップしようとします。レジストリは、RegisterGradient関数を呼び出すことによって設定されます。

TensorFlowは多くの(実際にはほとんどの)タイプのノードに対してこのレジストリにエントリを持っていますが、依然としてエントリがないノードタイプのサブセットが存在します。そのような場合は上記のエラーが発生します。 MaxPoolGradの勾配関数を計算して実装し、プル要求を送信することは、実際には便利です。