【问题标题】:Working of embedding layer in TensorflowTensorflow中嵌入层的工作
【发布时间】:2020-08-24 11:48:44
【问题描述】:

谁能解释一下输入和输出以及下面提到的层的工作

model.add(Embedding(total_words, 64, input_length=max_sequence_len-1))

total_words = 263

max_sequence_len=11

是64,维数吗?

以及为什么这一层的输出是(None, 10, 64)

不应该是每个词的64维向量,即(None, 263, 64)

【问题讨论】:

  • 嗨。这似乎是一个编程问题。对?在这种情况下,它在这里是题外话,你应该在 Stack Overflow 上问它。请阅读ai.stackexchange.com/help/on-topic

标签: machine-learning deep-learning nlp tensorflow python


【解决方案1】:

你可以找到关于Tensorflow的Embedding Layer的所有信息Here

前两个参数是input_dimensionoutput_dimension

  • 输入维度基本上代表了模型的词汇量。您可以使用Tokenizer() 函数的word_index 函数找出这一点。
  • 输出维度将是下一个Dense Layer 的输入维度

Embedding 层的输出格式为(batch_size, input_length, output_dim)。但是由于您指定了 input_length 参数,因此您的图层输入将采用(batch, input_length) 的形式。这就是输出格式为 (None, 10 ,64) 的原因。

希望能解开你的疑惑☺️

【讨论】:

  • 对于理解嵌入层不是特别有帮助 - 文档没有帮助。嵌入层如何对输入执行什么转换?为什么指定输入长度会导致删除output_dim?什么是`output_dim`?嵌入层与简单地在数据预处理中执行这些步骤有何不同,您能举一些具体的例子吗?
【解决方案2】:

Embedding 层中,第一个参数表示输入维度(通常具有相当大的维度)。第二个参数表示输出维度,也就是缩减向量的维度。第三个参数是序列长度。本质上,Embedding 层只是简单地学习一个形状为(input dim, output dim) 的查找表。该层的权重反映了该形状。然而,层的输出当然是(output dim, seq length);输入序列中每个元素的一维减少嵌入向量。您期望的形状实际上是嵌入层权重的形状。

【讨论】:

    猜你喜欢
    • 2021-04-11
    • 2017-04-18
    • 1970-01-01
    • 2020-08-19
    • 2019-02-09
    • 2016-11-29
    • 2023-04-11
    • 1970-01-01
    • 2017-08-03
    相关资源
    最近更新 更多