以下是我的模型代码:
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.我觉得concatenate出了点问题,你能帮帮忙吗?
发布于 2020-04-04 16:43:38
您在拼接层中忘记了一个括号..
self.model.add(concatenate([X,Y])必须是:
self.model.add(concatenate([X,Y]))https://stackoverflow.com/questions/61025371
复制相似问题