Keras Masking图层似乎无法正常工作

cig3rfwq  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(126)

Keras Masking层没有正确屏蔽嵌入输出。下面是我的代码示例-
--输入数据

raw_inputs = [
        [711, 632, 71],
        [73, 8, 3215, 55, 927],
        [83, 91, 1, 645, 1253, 927],
    ]
    padded_inputs = tf.keras.preprocessing.sequence.pad_sequences(
        raw_inputs, padding="post"
    )
    print(padded_inputs)
[[ 711  632   71    0    0    0]
 [  73    8 3215   55  927    0]
 [  83   91    1  645 1253  927]]

---填充代码

from tensorflow.python.keras import layers
    embedding = layers.Embedding(input_dim=5000, output_dim=16)
    masked_output = embedding(padded_inputs)

    masking_layer = layers.Masking(mask_value=0.0)

    masked_embedding = masking_layer(masked_output)

    print(masked_embedding._keras_mask)

我得到以下输出-

tf.Tensor(
[[ True  True  True  True  True  True]
 [ True  True  True  True  True  True]
 [ True  True  True  True  True  True]], shape=(3, 6), dtype=bool)

你知道为什么屏蔽没有正确发生吗?所有带0的值都应该被屏蔽False

qfe3c7zg

qfe3c7zg1#

padded_inputs已转换为masked_output,并嵌入到您的代码中,其中的0已丢失。有关详细信息,请查看https://keras.io/api/layers/core_layers/masking/。您还可以打印masked_output,您将看到0不存在。
在TensorFlow提供的原始示例中,您应该使用
embedding = layers.Embedding(input_dim=5000, output_dim=16, **mask_zero=True**)

unmasked_embedding = tf.cast( tf.tile(tf.expand_dims(padded_inputs, axis=-1), [1, 1, 10]), tf.float32 )

相关问题