字词嵌入示例程序
为了对于字词嵌入的实际应用有一个完整的理解,在此继续参照Tensorflow官方文档给出的示例整理一遍字词嵌入的实现过程。
首先导入必要的库:
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers
import tensorflow_datasets as tfdsStep 1. 数据载入
数据通过tensorflow_datasets这一包来加载:
(train_data, test_data), info = tfds.load(
'imdb_reviews/subwords8k',
split = (tfds.Split.TRAIN, tfds.Split.TEST),
with_info=True, as_supervised=True)
encoder = info.features['text'].encoder载入之后train_data和test_data是一个tf.data.Dataset,其中就已经是映射成整数值之后的文本数据了,对应的文本可以在info中找到。所以将文本进行编码的过程在此就跳过了。
下一步将数据转换为batch形式。由于文本数据时间不定长的,所以使用padded_batch,注意文档中badded_shaps参数少了要补上。
train_batches = train_data.shuffle(1000).padded_batch(10, ((None,),()))
test_batches = test_data.shuffle(1000).padded_batch(10, ((None,),()))Step 2. 模型构建
为了训练Embedding layer,我们需要构建一个简单的模型,其中就要用到Embedding layer。在其后,由于Embedding layer的输出仍然是不定长的,为了保证输出的形状一致这样后面才能使用全连接层进行计算,所以采用了简单粗暴的GlobalAveragePooling来把结果变为定长的(简单演示而已)。
Setp 3. 训练模型
在这一个训练过程中,Embedding layer也就会一起通过BP算法进行学习,以达到更好的编码效果。
Step 4. 编码效果可视化
将模型的weight提取出来之后,我们将编码结果格式化后写入到文件,上传到Embedding Projector[2]即可查看可视化的结果。
效果如下:

参考
Last updated
Was this helpful?