Keras 嵌入简介及应用实例

153 阅读5分钟

Keras Embedding

Keras嵌入的定义

Keras嵌入是指在用于文本数据的神经网络上嵌入一层,这将是该神经网络的一部分。它需要数据作为输入,其中编码需要对文本进行解码并与所有文本进行操作。作为文本的一部分存在的每个词都是一个独特的整数,因为它是以编码的形式存在的。它还包括作为神经网络的一部分的预训练词,这将有助于嵌入文本或词层。它是一种将保存在另一个模型中使用的单词的转移。

什么是Keras嵌入?

文本中的单词嵌入强烈地影响了单词及其相关含义的过度呈现。因此,它是对稀疏的、包含少量单词的表示法的改进。它包括Keras库,它将根据其要求在神经网络上嵌入一个层。一旦完成了层的嵌入,主要的想法是将其融入适当的Keras模型。

如何使用Keras嵌入?

  • 如前所述,Keras嵌入与单词嵌入很好地融合在一起,单词嵌入为具有某种相对意义的单词的表示提供了充足的空间,其中,具有稀疏表示的改进可以用于Keras的深度学习。
  • 嵌入层是Keras的可用的重要层之一。
  • 这个嵌入层主要用于自然语言处理的应用,比如建立语言模型,处理NLP相关问题,以及使用像GloVe这样的预训练词嵌入。
  • 也可以使用Keras嵌入层来训练和准备你的自定义嵌入。
  • Keras是Python中的库,建立在TensorFlow之上;它有自己的优势,比如它被用于大多数深度学习网络。
  • Keras支持两种类型的API。顺序性API和功能性API。同样,为了实现单词嵌入,Keras库提供或包含一个名为Embedding()的层。
  • 嵌入层是一个用于NLP任务的顺序模型的第一层的类。
  • 嵌入层有某些必要条件,即需要对许多词进行手套嵌入,这可能比调用Keras API的顺序方式有用。

嵌入层可以用来执行三个重要任务:

- 它可以用来学习单词嵌入并保存总的结果模型。

- 嵌入层可以用来在一个新的模型中按要求加载一些预训练的数据或词嵌入。

嵌入层也可以用来学习单词嵌入并执行一些NLP任务,如情感分析、文本分类和更多的NLP相关任务。

Keras嵌入的参数

作为Keras嵌入层的参数如下。

  • embedding_layer = Embedding(120, 12, input_lenth=25)
    嵌入层中的第一层指的是整个词汇量的大小,或者换句话说,指的是语料库中唯一词汇的总数。

第二个参数是指每个词向量的维数。例如,每个向量的长度为32;其他向量的情况也是如此。最后,第三个参数包括输入句子的长度。

  • 嵌入层输入的预期输出是一个二维向量,其中单词沿着一行表示,其相应的维度以列的形式表示。
  • 嵌入层的类表示由以下参数或参数组成。
tf.keras.layers.Embedding(
input_dimnsion,
output_dimnsion,
embeddings_initializer_0="uniform",
embeddings_regularizer_0=None,
activity_regularizer_0=None,
embeddings_constraint_0=None,
mask_zero_0=False,
input_length_with=None,
**kwargs
)

其中:

  • Input_dimnsion:它是一个整数类型,有词汇类型的大小,最大整数索引+1。
  • Output_dimnsion:它也是一个整数类型,其中密集嵌入有一些其他维度。
  • Embeddings_initializer_0:它代表Keras的初始化器,作为初始化器用于嵌入矩阵。
  • embeddings_regularizer_0: 它是一个调节器函数,适用于带有Keras正则器的嵌入矩阵。
  • Embedding_constraints:这些是用于约束函数的一些约束条件,作为嵌入类的一部分,是keras约束的一部分。
  • Mask_zero_0:它主要代表任何布尔值,其值可以是0或1,其中作为0的输入值被屏蔽掉了特殊的填充值。它对可能考虑一些输入变量的循环层很有用。
  • Input_layer:它是一个常数,由长度与某些参数组成,必须将其与扁平化或密集层上游连接起来进行操作。

Keras嵌入实例

例子1:这个代码片段告诉我们要创建一个带标签的文档,有一组不同的数组进行工作,如图。

docs_def = ['Pleasent_weather!','chilled_wind','Autmn_break','winter_fall','Excellent!','Storm','Snowfall!','Night','time_would_have_been_better.'] labels_def = array([1,1,0,1,0,1,0,0,0,1])

示例2:这个代码片段是对示例1的扩展,其中一个hot()函数用于创建每个单词的整数编码的哈希值。

vocab_sz = 60
encoded_docms = [one_hot(dt, vocab_sz) for dt in docs_def] print(encoded_docms)

例3:这个代码片断表示使用作为keras库函数一部分的pad_seuences函数对文档进行填充,最大长度为6。

max_lenth = 6
padded_docms = pad_sequences(encoded_docms, maxlen=max_lenth, padding='post')
print(padded_docms)

例4:一旦在上一步完成了所有的前提条件,现在就需要设计模型,在这个过程中,一个连续的API被调用,并最终总结出一个定义好的模型,如下图所示。

model = Sequential()
model.add(Embedding(vocab_sz, 12, input_lenth=max_lenth))
model.add(Flatten())
model.add(Dense(2, activation='sigmoid'))
model.compile(optimizer='ame', loss='binary_catestrotropy', metrics=['accurate'])
print(model.summary())

例子5:这个代码片断表示拟合和评估任何分类模型的方法,基于准确度值,如图所示。

model.fit(padded_docms, labels, epochs=60, verbose=1)
loss, accurate = model.evaluate(padded_docms, labels, verbose=1)
print('Accurate: %f' % (accurate*200))

总结

这是处理单词和文本的有效方法之一,因为它提前提供了一个嵌入层来处理它。所有的神经网络模型和机器学习算法都使用Keras嵌入,关于单词和文本级别的训练和操作,当与神经网络分析结合在一起时,它是真正强大的。