Ошибка: объект NoneType не имеет атрибута _inbound_nodes при объединении слоев (модель с несколькими входами)

, NodeList, возвращенный getChildNodes(), содержит Element дочерние узлы (что в этом случае вас интересует), а также дочерние узлы атрибута самого Node (чего вы не делаете).

for(int j=0; j<children.getLength();j++) {
   if (children.item(j) instanceof Element == false)
       continue;

   NamedNodeMap n = children.item(j).getAttributes();
   passwordTagAttr=(Attr) n.getNamedItem("tag");
   passwordTag=stopTagAttr.getValue();  
   passwordList.add(passwordTag);                   
}
0
задан ratmatazz1123 17 January 2019 в 13:51
поделиться

1 ответ

Когда вы объединяете nlp_output с meta_input, вы используете keras.backend.concatenate там, где вам следует использовать keras.layers.Concatenate. Следующий код должен работать:

nlp_input = Input(shape=(20860,))
meta_input = Input(shape=(35,))
emb = Embedding(output_dim=32, input_dim=20859)(nlp_input)
nlp_output = Bidirectional(LSTM(128, dropout=0.3, recurrent_dropout=0.3, kernel_regularizer=regularizers.l2(0.01)))(emb)
x = Concatenate()([nlp_output, meta_input])
layer1 = Dense(32, activation='relu')(x)
layer2 = Dense(1, activation='sigmoid')(layer1)
model = Model(inputs=[nlp_input , meta_input], outputs=layer2)
optimizer=adam(lr=0.00001)
model.compile(optimizer=optimizer, loss='binary_crossentropy', metrics = ['binary_accuracy'])

Примечание: Функции из keras.backend можно обернуть в слои Lambda, но это не имеет особого смысла, когда уже есть keras.layers слой, который обеспечивает функциональность, которая вам нужна. В вашем случае, если вы хотите использовать keras.backend.concatenate в лямбда-слое, вы можете сделать следующее:

concatenated = keras.layers.Lambda(lambda x: keras.backend.concatenate(x))([input1, input2])
0
ответ дан Anna Krogager 17 January 2019 в 13:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: