0

どのようにすればいいのですか異なる空間空間の2つのレイヤーを組み合わせるTensorflow例えばテンソルフローの多レベルフィーチャ融合

::

batch_size = 3 

input1 = tf.ones([batch_size, 32, 32, 3], tf.float32) 
input2 = tf.ones([batch_size, 16, 16, 3], tf.float32) 

filt1 = tf.constant(0.1, shape = [3,3,3,64]) 
filt1_1 = tf.constant(0.1, shape = [1,1,64,64]) 

filt2 = tf.constant(0.1, shape = [3,3,3,128]) 
filt2_2 = tf.constant(0.1, shape = [1,1,128,128]) 

#first layer 
conv1 = tf.nn.conv2d(input1, filt1, [1,2,2,1], "SAME") 
pool1 = tf.nn.max_pool(conv1, [1,2,2,1],[1,2,2,1], "SAME") 

conv1_1 = tf.nn.conv2d(pool1, filt1_1, [1,2,2,1], "SAME") 
deconv1 = tf.nn.conv2d_transpose(conv1_1, filt1_1, pool1.get_shape().as_list(), [1,2,2,1], "SAME") 

#seconda Layer 
conv2 = tf.nn.conv2d(input2, filt2, [1,2,2,1], "SAME") 
pool2 = tf.nn.max_pool(conv2, [1,2,2,1],[1,2,2,1], "SAME") 

conv2_2 = tf.nn.conv2d(pool2, filt2_2, [1,2,2,1], "SAME") 
deconv2 = tf.nn.conv2d_transpose(conv2_2, filt2_2, pool2.get_shape().as_list(), [1,2,2,1], "SAME") 

deconv1形状 [3、8、8、64]であり、deconv2形状 [3、4、4、128]です。ここではtf.concatを使用してdeconv1deconv2を組み合わせることはできません。だから私はこれをどのようにすることができますか?

編集

これは私が実装しようとしたアーキテクチャのイメージです::それは、この用紙にreleatedさ::

VII。 He、W.、Zhang、X.Y.、Yin、F.、& Liu、C.L.(2017)。ディープ・ダイレクト マルチ・オリエンテッド・シーン・テキスト検出のための回帰。 arXivのプレプリント arXivの:1703.08289

architecture

+0

最初の答えはTensorflow APIをベースにしているので、この連結操作はできません。連結は軸(すなわち、軸1上のtf.concat([t3、t4]、1)上で行うことができるので、他の軸は同じ形状でなければならない。なぜあなたがこのコンカットをしたいのか教えてください、あなたの目的は何ですか? –

+0

私はオブジェクトの検出をしようとします。このアプローチでは、いくつかの畳み込みレイヤーをプールレイヤー(各コンバージョンレイヤーにプールレイヤーを直接追従させたもの)で使用しました。デコンボリューションレイヤー(UpSample)を使用し、各デコンボリューションレイヤーは異なるプールレイヤーを取ります。たとえば、deconv1はプール1を入力としています。私の問題は次のステップです:どのようにこれらのデコンボリューションレイヤを結合(融合)できますか? – CCCC

+0

あなたはそれを行うことはできません、あなたは異なるプールリング層に起因する異なる形の2つの行列を連結することはできません。質問を編集して使用するアーキテクチャを投稿するには、最終的な答えを書いて、このようなボトルネックパイプラインアーキテクチャを使用する方法を指摘します。https://arxiv.org/pdf/1701.03056.pdf –

答えて

1

enter image description here

私はあなたが指し示す紙をチェックし、それがあるが、このネットワークへの入力画像を考慮するサイズH x W(高さと幅)、Iを持っています各レイヤーの側面に出力イメージのサイズを書きます。次に、入力レイヤーの矢印を描く最も下のレイヤーを見てみましょう。このレイヤーは2つの入力を持ちます。最初のレイヤーは最初のレイヤーの形状がH/2 x W/2で、2番目のレイヤーが最初のプールレイヤーのサイズはH/2 x W/2です。これらの2つの入力は結合されず(連結ではなく、紙に基づいて一緒に追加されます)、最後のUpsampleレイヤーに入ります。サイズはH x Wです。

他のUpsampleレイヤーも同じ入力を持ちます。あなたが見ることができるように、すべてのマージ操作にはマッチする形があります。また、すべてのマージレイヤのフィルタ番号は128で、他のレイヤとの整合性があります。

マージの代わりにconcatを使用することもできますが、フィルタ番号が大きくなるので注意してください。すなわち、形状がH/2 x W/2 x 128である2つの行列をマージすると、同じ形状の結果がH/2 x W/2 x 128となるが、形状がH/2 x W/2 x 128で最後の軸に2つ並んでいる結果、H/2 x W/2 x 256となる。

私は可能な限りあなたを導いてみましたが、それは役に立ちました。

+0

本当にありがとうアリ、それは明確な説明であり、それは有用です – CCCC

関連する問題