簡體   English   中英

如何使用Keras實施注意力

[英]How to implement Attention using Keras

我有一個具有輸入序列和輸出序列的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),然后針對當前輸出(方程10)計算每個輸出狀態的softmax,然后將每個輸出相乘狀態與相應的softmax(注意)(等式11)相對應,然后取加權狀態的總和,然后取表示的最終輸出的tanh。 最后,我們將注意力向量與輸出狀態串聯起來。

我怎樣才能做到這一點? 使用keras API可以做到這一點,還是我必須提出自己的自定義層? 有什么幫助嗎?

先感謝您....

目前還沒有Keras API。 但是,許多勤奮的程序員使用Keras進行了一些不錯的實現。 您可以嘗試在keras-monotonic-attention中查看代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM