当前位置: 首页 > 面试题库 >

如何在keras中添加注意力机制?

贺英悟
2023-03-14
问题内容

我目前正在使用从github
上的一次讨论中获得的这段代码,这是注意机制的代码:

_input = Input(shape=[max_length], dtype='int32')

# get the embedding layer
embedded = Embedding(
        input_dim=vocab_size,
        output_dim=embedding_size,
        input_length=max_length,
        trainable=False,
        mask_zero=False
    )(_input)

activations = LSTM(units, return_sequences=True)(embedded)

# compute importance for each step
attention = Dense(1, activation='tanh')(activations)
attention = Flatten()(attention)
attention = Activation('softmax')(attention)
attention = RepeatVector(units)(attention)
attention = Permute([2, 1])(attention)


sent_representation = merge([activations, attention], mode='mul')
sent_representation = Lambda(lambda xin: K.sum(xin, axis=-2), output_shape=(units,))(sent_representation)

probabilities = Dense(3, activation='softmax')(sent_representation)

这是正确的方法吗?我有点期待时间分布层的存在,因为关注机制分布在RNN的每个时间步中。我需要有人确认此实现(代码)是注意力机制的正确实现。谢谢。


问题答案:

如果您想在时间维度上关注,那么这段代码对我来说似乎是正确的:

activations = LSTM(units, return_sequences=True)(embedded)

# compute importance for each step
attention = Dense(1, activation='tanh')(activations)
attention = Flatten()(attention)
attention = Activation('softmax')(attention)
attention = RepeatVector(units)(attention)
attention = Permute([2, 1])(attention)

sent_representation = merge([activations, attention], mode='mul')

您已经计算出shape的注意力向量(batch_size, max_length)

attention = Activation('softmax')(attention)

我以前从未看过这段代码,所以我不能说这段代码是否正确:

K.sum(xin, axis=-2)


 类似资料:
  • 本文向大家介绍注意力机制相关面试题,主要包含被问及注意力机制时的应答技巧和注意事项,需要的朋友参考一下 encoder(x1,x2,x3…) → 语义编码c → decoder(y1,y2,y3…) 语音编码c对不同的x有不同的概率分布值(影响程度) 每个Ci可能对应着不同的源语句子单词的注意力分配概率分布 每个Ci可能对应着不同的源语句子单词的注意力分配概率分布

  • 在“编码器—解码器(seq2seq)”一节里,解码器在各个时间步依赖相同的背景变量来获取输入序列信息。当编码器为循环神经网络时,背景变量来自它最终时间步的隐藏状态。 现在,让我们再次思考那一节提到的翻译例子:输入为英语序列“They”“are”“watching”“.”,输出为法语序列“Ils”“regardent”“.”。不难想到,解码器在生成输出序列中的每一个词时可能只需利用输入序列某一部分的

  • 本文向大家介绍注意力公式相关面试题,主要包含被问及注意力公式时的应答技巧和注意事项,需要的朋友参考一下 参考回答: Soft attention、global attention、动态attention Hard attention “半软半硬”的attention (local attention) 静态attention 强制前向attention

  • 问题内容: 我想在Tomcat中添加gdal库。我读了Tomcat中找不到的本机库,但不知道应该在哪里添加。 错误: 我从以下网址下载了gdal 64位:http ://vbkto.dyndns.org:1280/sdk/PackageList.aspx?file= release-1600-x64-gdal-1-9-mapserver-6-2.zip 问题答案: 必须在而不是startup.ba

  • 群主/管理员在企业群中,点击机器人图标打开机器人面板,进入添加机器人列表。1个群最多只能添加10个机器人。 详细请参阅:在客户端使用机器人 机器人添加入口:

  • 问题内容: 我正在尝试转学;为此,我想删除神经网络的最后两层并添加另外两层。这是一个示例代码,它也会输出相同的错误。 我使用删除了该图层,但是当我尝试添加其输出时出现此错误 AttributeError:“模型”对象没有属性“添加” 我知道该错误的最可能原因是不当使用。我应该使用其他什么语法? 编辑: 我试图在keras中删除/添加图层,但不允许在加载外部重物后添加它。 它显示此错误 问题答案: