0

Tensorflowを使用して研究紙から畳み込みニューラルネットワークを再現しようとしています。 Image of architectureTensorflowで機能マップを正しく連結する

畳み込みの結果が連結されている図は何度もあります。現在、これらのフィーチャーマップを連結する最後の軸(チャネルを表す)に沿ってtf.concat(https://www.tensorflow.org/api_docs/python/tf/concat)を使用しています。もともと私はすべての軸に沿って連結したいと考えていましたが、これはテンソルフローのオプションではないようです。今、私は、異なるサイズのテンソル(特徴マップ)が連結されるべきであることを紙が示しているところの問題に直面している。 tf.concatはさまざまなサイズの連結をサポートしていないので、これが最初に使用する正しいコマンドかどうか疑問に思っています。要約すれば、テンソルフローでフィーチャマップ(時々サイズの異なる)を連結する正しい方法は何ですか?

ありがとうございます。

答えて

1

異なるサイズのフィーチャマップを連結することは不可能で無意味です。

2テンソルを連結する場合、連結1を除くすべての次元は等しくなければなりません。

投稿した画像から、実際に連結されたすべてのフィーチャマップは、他のフィーチャマップと同じ空間エクステント(深度が異なる)を持つことがわかります。 このように連結できない場合は、コードに問題があると思われます。たぶん問題は、畳み込み演算でpadding = validが不足しているためです。

0

テンソルは、1つの軸に沿ってのみ連結することができます。異なるサイズのフィーチャマップを連結する必要がある場合、元のテンソルのサイズをどうにか操作しなければなりません。

0

開始ネットワークで発生する問題は、サイズを同じに保つために畳み込みレイヤーでパディングを使用することで解決できます。開始ブロックでは、 "VALID"パディングを使用する代わりに、 "SAME"に変更します。したがって、サイズ変更を必要とせずに、出力を連結することができます。

また、連結されるフィーチャマップにパディングを追加することもできます。あなたはtf.pad()を使ってこれを行うことができます。

これを実行したくない場合は、tf.image.resize_images関数を使用して同じ値にリサイズすることができます。しかし、これは汚い、計算上高価なアプローチです。

関連する問題