python - 是否可以重新训练谷歌的通用句子编码器,以便在编码句子时考虑关键字?
问题描述
我对trainable = True
加载 Universal Sentence Encoder 3 时设置的含义有点困惑。我有一个小型语料库(3000 个不同的句子),给定一个句子,我想找到 10 个最相似的句子。我目前的方法是:
1) 加载模块
embed = hub.Module("path", trainable =False)
2)编码所有句子:
session.run(embed(sentences))
3)使用余弦相似度找到最接近的句子。
它表现不错,但我希望模型能够根据我自己的字典进行微调,因为有些关键字比其他关键字更重要。因此这不是分类问题。在查看现有的重新训练模块示例时(https://www.tensorflow.org/hub/tutorials/text_classification_with_tf_hub),它是用于分类的。
是否可以让 Universal Sentence Encoder 重新训练我的关键字并输出不同的嵌入(例如通过设置trainable = True
)?
解决方案
设置hub.Module(..., trainable=True)
不允许更改词汇表,但它使模块的变量可训练,这可能足以捕捉现有单词相关性的机会。
像 USE 这样的预训练词嵌入往往对各种任务(包括分类、回归、嵌入空间中的邻近搜索)有用。一般来说,对于这些中的任何一个,从相同的 TF Hub 模块开始都没有错。
推荐阅读
- python-3.x - 如何在 tkinter 中添加图像?
- html - 如何使标志在圆圈内居中?
- imagemagick - 从命令行将 YUY2 (YUYV) 转换为 png
- c++ - RWStructuredBuffer 计数器不递减 (DX12)
- algorithm - 计算两个排列中的对 (a,b),使得两个排列中的 index(a) < index(b)
- c++ - 在复制构造函数定义中调用成员构造函数
- javascript - 计算器退格按钮
- html - 内联块的父级不是其子级的宽度,即使其父级是溢出隐藏的
- javascript - 如何替换空格并从对象的所有键中删除特殊字符
- video-streaming - 在 RTSP 流中提供特殊字符密码