Что не так с моделью BiLSTM + Conv1D? ошибка конкатенации - PullRequest
0 голосов
/ 04 апреля 2020

Вот мой код моей модели:

self.model = Sequential()
if use_pretrained_embedd:
    self.model.add(Embedding(input_dim = self.vocab_size,output_dim = embedding_size,input_length = self.max_len,weights = [self.embedding_matrix],trainable = False))
else:
    self.model.add(Embedding(input_dim = self.vocab_size,output_dim = embedding_size,input_length = self.max_len))
self.model.add(SpatialDropout1D(0.35))
self.model.add(Bidirectional(LSTM(128, return_sequences=True, dropout = 0.15, recurrent_dropout = 0.15)))
self.model.add(Conv1D(filters=64, kernel_size=3, padding='valid', kernel_initializer='glorot_uniform'))
self.model.add(GlobalAveragePooling1D())
X = GlobalAveragePooling1D()
Y = GlobalMaxPooling1D()
self.model.add(concatenate([X,Y],axis=-1))
self.model.add(Dense(len(self.labels),activation = 'sigmoid'))
self.model.compile(optimizer = 'adam',loss = 'binary_crossentropy',metrics = ['accuracy'])
self.model.summary()


, и он показывает мне эту ошибку:

ValueError: Layer concatenate_1 was called with an input that isn't a symbolic tensor. Received type: <class 'keras.layers.pooling.GlobalAveragePooling1D'>. Full input: [<keras.layers.pooling.GlobalAveragePooling1D object at 0x7f1c89520f90>, <keras.layers.pooling.GlobalMaxPooling1D object at 0x7f1c8955b9d0>]. All inputs to the layer should be tensors.

Я думаю, что с конкатенацией что-то не так, вы можете помочь?

1 Ответ

0 голосов
/ 04 апреля 2020

Вы забыли скобку в слое сцепления ..

    self.model.add(concatenate([X,Y])

Должно быть:

    self.model.add(concatenate([X,Y]))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...