gpt4 book ai didi

tensorflow - 有没有办法将原生 tf Attention 层与 keras Sequential API 一起使用?

转载 作者:行者123 更新时间:2023-11-30 08:32:24 24 4
gpt4 key购买 nike

有没有办法将原生 tf Attention 层与 keras Sequential API 一起使用?

我想使用这个particular class 。我发现了自定义实现,例如 this one 。我真正想要的是将此特定类与 Sequential API 一起使用

这是我正在寻找的代码示例

model = tf.keras.models.Sequential()

model.add(tf.keras.layers.Embedding(vocab_length,
EMBEDDING_DIM, input_length=MAX_SEQUENCE_LENGTH,
weights=[embedding_matrix], trainable=False))

model.add(tf.keras.layers.Dropout(0.3))

model.add(tf.keras.layers.Conv1D(64, 5, activation='relu'))
model.add(tf.keras.layers.MaxPooling1D(pool_size=4))

model.add(tf.keras.layers.CuDNNLSTM(100))
model.add(tf.keras.layers.Dropout(0.4))

model.add(tf.keras.layers.Attention()) # Doesn't work this way

model.add(tf.keras.layers.Dense(1, activation='sigmoid'))

最佳答案

我最终使用了在 this repository 上找到的自定义类由 tsterbak.这是 AttentionWeightedAverage 类。它与顺序 API 兼容这是我的引用模型:

model = Sequential()

model.add(Embedding(input_dim=vocab_length,
output_dim=EMBEDDING_DIM, input_length=MAX_SEQUENCE_LENGTH,
weights=[embedding_matrix], trainable=False))
model.add(Conv1D(64, 5, activation='relu'))
model.add(MaxPooling1D(pool_size=4))

model.add(Bidirectional(GRU(100, return_sequences=True)))

model.add(AttentionWeightedAverage())
model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy', optimizer="adam", metrics=['accuracy'])

请注意,这就是所谓的“软注意力”或“加权平均注意力”,如 "Show, Attend and Tell: Neural Image Caption Generation with Visual Attention" 中所述。 。详细更容易理解here

关于tensorflow - 有没有办法将原生 tf Attention 层与 keras Sequential API 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59312883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com