2016-02-09 10 views
6

私は、センタープールを行う新しいモジュールを追加すると考えました。テンソルの流れでカスタムのプール層モジュールを書くには?

私はテンソルフローコードを調べていましたが、必要な計算を行うために "Maxpool"、 "AvgPool"などのパラメータを渡して別のファイルの関数を内部的に呼び出すgen_nn_ops.pyというファイルがあります。

私は、ウィンドウの中心要素を選択し、中央のプールをしたいです。私はmatlabとC++のバージョンのための準備ができていますが、そのような計算のためにTensorFlowに新しいモジュールを追加する方法を知る必要があります。また、逆伝播コードを設定する場所。

答えて

8

カスタムプーリングレイヤはおそらくC++で実装されています。

  1. Pythonラッパー機能(tf.nn.max_pool_with_argmax()自体を)自動的にgen_nn_ops.pyに、生成されます。あなたがする必要があるだろうかを見るために、tf.nn.max_pool_with_argmax()生活の実装はどこを見てみましょう。これは最終的にnn.pyにインポートされるので、import tensorflow as tfのときはtf.nnの下に表示されます。

  2. C++では、op registration in ops/nn_ops.cckernel registration in kernels/maxpooling_op.ccがあります。

  3. kernel itself is defined in kernels/maxpooling_op.cc

  4. グラジエントは、同じ場所に別のオペランド— "MaxPoolWithArgmaxGrad" —と定義されています。

あり、新しいオペアンプを追加するためにやるべき仕事のかなりの量は、(より完全なガイドのためのthis tutorialを参照)ですが、うまくいけば、これらのポインタは助けることができます!

関連する問題