keras.layersEmbedding()的使用方法

3个月前 403次点击 来自 TensorFlow

什么是Embedding

Embedding主要用于将一个特征转换为一个向量。
类似one-hot编码,但在实际应用当中,将特征转换为one-hot编码后维度会十分高。所以我们会将稀疏特征转化为稠密特征,通常做法即使用Embedding。

Embedding的实现及操作实例

tf.keras.layers.Embbedding()只能作为模型第一层使用

#vocab_size:字典大小
#embedding_dim:本层的输出大小,也就是生成的embedding的维数
#input_length:输入数据的维数,因为输入数据会做padding处理,所以一般是定义的max_length
keras.layers.Embedding(vocab_size, embedding_dim, input_length = max_length)

以下是文本分类问题所用到的模型,数据使用了imdb影视评论的数据

imdb = keras.datasets.imdb
vocab_size = 10000
index_from = 3
(train_data, train_labels), (test_data, test_labels) = imdb.load_data(num_words=vocab_size, index_from=index_from)

模型结构

embedding_dim = 16 
batch_size = 128
model = keras.models.Sequential([
# 定义矩阵(vocab_size * embedding_dim), 输出(batch_size, max_length, embedding_dim), 将词表表示的句子转化为embedding
      keras.layers.Embedding(vocab_size, embedding_dim, input_length = max_length),
#batch_size*max_length*embedding_dim->batch_size*embedding_dim
      keras.layers.GlobalAveragePooling1D(),
      keras.layers.Dense(64, activation="relu"),
     keras.layers.Dense(1, activation="sigmoid")
])
model.compile(loss="binary_crossentropy", optimizer="adam", metrics=["accuracy"])
Card image cap
开发者雷

尘世间一个小小的开发者,每天增加一些无聊的知识,就不会无聊了

要加油~~~

技术文档 >> 系列应用 >>
热推应用
Let'sLearnSwift
学习Swift的入门教程
PyPie
Python is as good as Pie
标签