Keras的Embedding函数

一个小小的学习笔记:
Keras中文文档
深度学习中Keras中的Embedding层的理解与使用

以下摘自第二个链接:
Keras提供了一个嵌入层,适用于文本数据的神经网络。

它要求输入数据是整数编码的,所以每个字都用一个唯一的整数表示。这个数据准备步骤可以使用Keras提供的Tokenizer API来执行。
嵌入层用随机权重进行初始化,并将学习训练数据集中所有单词的嵌入。

  • 它是一个灵活的图层,可以以多种方式使用,例如:

  • 它可以单独使用来学习一个单词嵌入,以后可以保存并在另一个模型中使用。

  • 它可以用作深度学习模型的一部分,其中嵌入与模型本身一起学习。

  • 它可以用来加载预先训练的词嵌入模型,这是一种迁移学习。

嵌入层被定义为网络的第一个隐藏层。它必须指定3个参数:

  • input_dim:这是文本数据中词汇的取值可能数。例如,如果您的数据是整数编码为0-9之间的值,那么词汇的大小就是10个单词;
  • output_dim:这是嵌入单词的向量空间的大小。它为每个单词定义了这个层的输出向量的大小。例如,它可能是32或100甚至更大,可以视为具体问题的超参数;
  • input_length:这是输入序列的长度,就像您为Keras模型的任何输入层所定义的一样,也就是一次输入带有的词汇个数。例如,如果您的所有输入文档都由1000个字组成,那么input_length就是1000。

例如,下面我们定义一个词汇表为200的嵌入层(例如从0到199的整数编码的字,包括0到199),一个32维的向量空间,其中将嵌入单词,以及输入文档,每个单词有50个单词。

e = Embedding(input_dim=200, output_dim=32, input_length=50)

嵌入层自带学习的权重,如果将模型保存到文件中,则将包含嵌入图层的权重。

嵌入层的输出是一个二维向量,每个单词在输入文本(输入文档)序列中嵌入一个。

如果您希望直接将Dense层接到Embedding层后面,则必须先使用Flatten层将Embedding层的2D输出矩阵平铺为一维矢量。

你可能感兴趣的:(深度学习,keras,人工智能,深度学习)