【问题标题】:Question about input_dim in keras embedding layer关于keras嵌入层input_dim的问题
【发布时间】:2021-09-02 21:55:54
【问题描述】:

来自tf.keras.layers.Embedding 上的文档:

input_dim:

整数。词汇表的大小,即最大整数索引 + 1。

mask_zero:

布尔值,输入值 0 是否是应被屏蔽的特殊“填充”值 出去。这在使用可能采用可变长度输入的循环层时很有用。如果这 为 True,则模型中的所有后续层都需要支持屏蔽,否则将出现异常 被抚养。如果将 mask_zero 设置为 True,则索引 0 不能用于 词汇表(input_dim 应该等于词汇表的大小 + 1)。

  1. 我正在阅读this answer,但我仍然感到困惑。如果我的词汇量为 n,但它们使用从 1n 的索引值进行编码(0 留作填充),那么 input_dim 是否等于 nn+1

  2. 如果输入用零填充,离开mask_zero = False会有什么后果?

  3. 如果mask_zero = True,根据文档,我必须将第一个问题的答案加一?如果不这样做,预期的行为是什么?

【问题讨论】:

    标签: tensorflow keras nlp


    【解决方案1】:

    我基本上只是试图改写链接答案的部分内容,以使其在当前上下文中更易于理解,并解决您的其他子问题(根据 [ask],从技术上讲,这应该是他们自己的问题)。

    1. 无论您是否实际使用0 进行填充都没有关系,Keras 假设您将从零开始索引,并且必须为数据中的0 输入值“支撑自己”。因此,您需要选择 n+1 的值,因为您实际上只是在您的词汇表中添加了一个您以前没有考虑过的特定值。
    2. 我认为这个问题超出了详细讨论的范围,但是 - 根据确切的模型 - 填充位置的损失值不会影响反向传播。但是,如果您选择 mask_zero = False,您的模型基本上必须正确预测所有这些位置的填充(填充也会影响训练)。
    3. 这与我的插图有关:本质上,您正在添加一个新的词汇索引。如果不调整维度,索引最高的词条 (n) 可能会出现索引错误(超出范围)。否则,您可能不会注意到任何不同的行为。

    【讨论】:

    • 如果我的词汇表从1 索引到n(0 作为填充)并且我设置mask_zero = True,那么 input_dim 应该是n+1 而不是n+2,因为我的大小词汇是n?
    猜你喜欢
    • 2017-08-30
    • 2021-03-08
    • 2020-06-20
    • 2019-05-17
    • 2021-06-17
    • 1970-01-01
    • 1970-01-01
    • 2022-12-31
    • 1970-01-01
    相关资源
    最近更新 更多