gpt4 book ai didi

keras - 如何在keras中使用mask_zero=True嵌入的结果

转载 作者:行者123 更新时间:2023-12-02 11:16:48 24 4
gpt4 key购买 nike

在keras中,我想计算非零嵌入输出的平均值。我想知道嵌入层中 mask_zero=True 或 False 之间有什么区别。我尝试了下面的代码:

input_data = Input(shape=(5,), dtype='int32', name='input')
embedding_layer = Embedding(1000, 24, input_length=5,mask_zero=True,name='embedding')
out = word_embedding_layer(input_data)
def antirectifier(x):
x = K.mean(x, axis=1, keepdims=True)
return x
def antirectifier_output_shape(input_shape):
shape = list(input_shape)
return tuple(shape)
out = Lambda(antirectifier, output_shape=antirectifier_output_shape,name='lambda')(out)

但结果似乎是所有元素的平均值,我怎样才能计算所有非零输入的平均值?

最佳答案

来自function's doc :

If this is True then all subsequent layers in the model need to support masking

您的 lambda 函数不支持屏蔽。例如,Keras 中的循环层支持屏蔽。如果您在嵌入中设置 mask_zero=True,那么您提供给嵌入层的所有 0 索引都将作为“屏蔽”传播,并且后续层能够理解“屏蔽”信息会使用它们。

基本上,如果您构建一个“平均”层来获取蒙版并仅计算非蒙版值的平均值,那么您将获得所需的结果。

您可以find here一种构建支持 mask 的 lambda 层的方法

希望对您有所帮助。

关于keras - 如何在keras中使用mask_zero=True嵌入的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49961683/

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