2017-07-13 8 views
0

テンソルフローのsumプーリングの既存の実装はありますか? documentationを検索すると、平均および最大プーリング操作のみがサポートされているようです。テンソルフローの合計プール

私はNHWCテンソルを持っています。ここで、各HxWマトリックスは2x2サムプーリングを介してダウンサンプリングしたい確率マップです。もし、集約関数がテンソルフローに存在しない場合は、Python APIを使ってこのダウンサンプリング演算を実装する別の方法がありますか?

答えて

1

現時点では、テンソルフローにそのようなものはありません。次の最良のものは、平均プーリングの出力に4を掛けるだけです。要素ごとの乗算は、この追加されたステップについて心配する必要はありません。

あなたdoしかし、プロセスの精度のビットのペア。

代わりに、自分で合計を計算することもできます。

y = (x[:,0::2,0::2,:] + 
    x[:,1::2,0::2,:] + 
    x[:,0::2,1::2,:] + 
    x[:,1::2,1::2,:]) 

これは以前の解決策よりも遅くする必要がありますが、それが重要な場合は精度が若干向上する可能性があります。

+0

その平均プールで良好なロジックを得てから、サイズを掛けてください!忠実度 –

+0

精度はあまり重要ではないので、実装では平均的なプールソリューションを使用します。ありがとう! –

+0

特に、BatchNormのようなものを使ってレイヤー出力を拡大する場合は、カーネルサイズを掛ける必要はありません。 – thorbjorn444

0

ユーザーは、平均プールを利用するために平均プールを利用できることを既に教えています。彼はまたあなたが精度を失うかもしれないと言いました(しかし、これはほとんど起こりそうもなく、ほとんどの場合無関係です)。

もう1つの簡単な方法があります。あなたは2d畳み込みとストライドを使って合計プールを計算することができます。あなたのカーネルは1の行列です。

+0

もう1つのすてきな解決策は、私はこれが平均プールと部門を差し引いたのと同じスピードを持っていると思いますか? –

+0

@サルバドールダリそれは単に真実ではありません。畳み込みカーネルでより多くの乗算を行うことになります。おそらく '2x2'プールの問題はないが、それでも。 – user1735003

+0

@ user1735003ああ、はい。私の悪い。私はそれがすべての要素で1倍になることを忘れていた...ありがとう –