我试图掌握分层注意力网络(HAN)的概念,我在网上找到的大部分代码都或多或少类似于这里的代码:https ://medium.com/jatana/report-on-text-分类-使用-cnn-rnn-han-f0e887214d5f:
embedding_layer=Embedding(len(word_index)+1,EMBEDDING_DIM,weights=[embedding_matrix],
input_length=MAX_SENT_LENGTH,trainable=True)
sentence_input = Input(shape=(MAX_SENT_LENGTH,), dtype='int32', name='input1')
embedded_sequences = embedding_layer(sentence_input)
l_lstm = Bidirectional(LSTM(100))(embedded_sequences)
sentEncoder = Model(sentence_input, l_lstm)
review_input = Input(shape=(MAX_SENTS,MAX_SENT_LENGTH), dtype='int32', name='input2')
review_encoder = TimeDistributed(sentEncoder)(review_input)
l_lstm_sent = Bidirectional(LSTM(100))(review_encoder)
preds = Dense(len(macronum), activation='softmax')(l_lstm_sent)
model = Model(review_input, preds)
我的问题是:这里的输入层代表什么?我猜 input1 代表用嵌入层包裹的句子,但在这种情况下 input2 是什么?是 sendEncoder 的输出吗?在这种情况下,它应该是一个浮点数,或者如果它是另一层嵌入的单词,那么它也应该用嵌入层包裹。