1

我想比較兩個卷積和經常性網絡的圖像。首先,我想通過一些類似VGG的堆棧傳遞我的第一張圖像,然後將其饋送到第一個RNN輸入。然後第二個圖像應該通過相同的VGG,然後進入RNN的第二個輸入。如何先通過一個轉網,然後通過一個經常性的網絡在Keras中傳遞一對圖像?

如何用Keras實現此拓撲?

經常性網絡在處理第二張圖片時應該記住第一張圖片。

UPDATE

假設我有兩個輸入:

input1 = layers.Input(...) 
input2 = layers.Input(...) 

目前我有兩個VGG分支

x1 = vgg_stack(...)(x1) 
x2 = vgg_stack(...)(x2) 

x = layers.concatenate([x1, x2]) 

x = final_MLP(...)(x) 

我將如何與應用兩個輸入勁兒vgg_stack替換它,然後將這些結果傳遞給RNN

回答

1

您應該嘗試使用TimeDistributed包裝。你可以找到the doc here

它基本上將批處理後的第一個維作爲「時間維」,並將您給出的圖層或模型應用於每個時間步驟。因此,使用這樣的:

from keras.layers import TimeDistributed 

input_layer = Input((num_of_images, image_dims...)) 
# m_cnn is your VGG like model, taking one image as input. 
layer1 = TimeDistributed(m_cnn)(input_layer) 
layer2 = YourRNNLayer(...)(layer1) 

我希望這是有道理的你:)

+0

我不明白,抱歉。我有2個輸入:'input1'和'input2'。接下來是什麼? – Dims

+0

如果不是'Layer',我無法使用'm_cnn' – Dims