J'ai une question sur la façon de combiner une couche convolutive et une couche LSTM travaillant ensemble dans Keras. Supposons que j'utilise un CNN pour définir des mappages de caractéristiques pour une image. Et après une couche convolutionnelle particulière, j'ai une carte de caractéristiques, disons F, dont la dimension est (H, W, C). Maintenant, je veux utiliser chaque ligne de cette carte, comme [1 ::], [2 ::], ....., comme l'entrée de la couche LSTM suivante, mais itérativement H fois.A propos de l'utilisation de la sortie de la couche convolutive en tant qu'entrée LSTM
La sortie de LSTM est un tenseur (H, W).
Existe-t-il un moyen de le faire dans keras avec le calque par défaut? Ou j'ai besoin d'implémenter une couche personnalisée?
Merci
j'ai essayé d'utiliser la couche Timedistributed dans mon modèle, mais il ne fonctionne pas. En fait, ce que je veux mettre en œuvre est une version simplifiée de link.
Ici, je veux juste utiliser LSTM pour balayer chaque ligne des sorties de mon Conv2D et étiqueter chaque pixel de celui-ci. Mon code est comme suit:
input_img = Input(shape=(256,256,1))
# encoder
x = Conv2D(filters=16, kernel_size=(5,5))(input_img)
x = MaxPooling2D((2, 2), padding='same')(x) # 128x128
x = Conv2D(filters=32, kernel_size=(3,3))(x)
encoded = MaxPooling2D((2, 2), padding='same')(x) # 64x64
# decoder
x = Conv2D(filters=32, kernel_size=(3,3))(encoded)
x = UpSampling2D((2, 2))(x)
x = Conv2D(filters=16, kernel_size=(5,5))(x)
x = UpSampling2D((2, 2))(x)
# Using LSTM to produce final outputs
decoded = TimeDistributed(LSTM(3, input_shape=(32, 16),return_sequences=True))(x)
model = Model(input_img, decoded)
Mais il semble que mon modèle ne peut converger ......
voir l'exemple ci-dessous le titre "Visual Question répondeur modèle" ici: https://keras.io/getting-started/functional-api-guide/, il pourrait être pertinent. –