1

Ich möchte zwei Bilder mit einem konvolutionellen und einem wiederkehrenden Netzwerk vergleichen. Zuerst möchte ich mein erstes Bild durch einen VGG-ähnlichen Stapel leiten und es dann in einen ersten RNN-Eingang einspeisen. Dann sollte das zweite Bild DAS GLEICHE VGG passieren und danach in eine zweite Eingabe des RNN gehen.Wie man ein Paar Bilder zuerst durch ein Conv-Netz und dann durch ein wiederkehrendes Netz in Keras übergibt?

Wie implementiere ich diese Topologie mit Keras?

Das wiederkehrende Netzwerk sollte sich das erste Bild merken, während das zweite bearbeitet wird.

UPDATE

Angenommen, ich habe zwei Eingänge:

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

Zur Zeit habe ich zwei VGG Zweige

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

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

x = final_MLP(...)(x) 

Wie würde ich es mit signle vgg_stack an beiden Eingängen ersetzen, und dann werden diese Ergebnisse an RNN weitergegeben?

Antwort

1

Sie sollten versuchen, den TimeDistributed-Wrapper zu verwenden. Sie finden

Es dauert im Wesentlichen die erste Dimension nach dem Batch als eine "zeitliche Dimension" und es gilt die Schicht (oder Modell?), Die Sie als Argument für jeden zeitlichen Schritt geben. So wie diese verwenden es:

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) 

Ich hoffe, das macht Sinn für Sie :)

+0

ich nicht traurig verstehen. Ich habe 2 Eingänge: 'input1' und' input2'. Was als nächstes? – Dims

+0

Ich kann 'm_cnn' nicht verwenden, wenn es kein' Layer' ist – Dims

Verwandte Themen