我有一个keras模型,该模型具有输入序列和输出序列,其中每个输入都有一个关联的输出(标签)。
model = Sequential()
model.add(Masking(mask_value=5, input_shape= (Seq_in.shape[1],1)))
model.add(Bidirectional(LSTM(256, return_sequences=True)))
model.add(Dropout(0.2))
model.add(Bidirectional(LSTM(256, return_sequences=True)))
model.add(Dropout(0.2))
model.add(Dense(n_Labels, activation='softmax')) # n_Labels is the number of labels which is 15
sgd = optimizers.SGD(lr=.1,momentum=0.9,decay=1e-3,nesterov=True)
model.compile(loss='categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])
model.fit(X_train,Y_train,epochs=2, validation_data=(X_val, Y_val),verbose=1)
现在我想在Zhou等人的工作之后实现注意力机制: “基于注意力的双向长期短期记忆网络用于关系分类”。
对于每个输出,我们计算出每个输出状态的tanh 序列(本文中的方程9),然后我们为每个序列计算softmax 关于当前输出(Eq#10)的输出状态,则我们 将每个输出状态乘以相应的softmax(注意) (方程11),然后取加权状态的总和,然后取 表示的最终输出的tanh。最后我们串联 具有输出状态的注意力向量。
我该怎么做?使用keras API可以做到这一点,还是我必须提出自己的自定义层?有帮助吗?
提前谢谢您。...