在深度模型训练中,我们经常会使用到pre-train embedding,比如glove、w2v等模型的输出,尤其是在nlp和推广搜业务中。
面对多种多样的embdding形式,如何方便的利用就成为了一个问题,这里记录一下我用来reload embedding的方法。
1. embedding存储方式
1.1 单层映射
pre-train embedding的存储方式多种多样,最常见的一种是直接存到在文件中,通过<key, vlaue>的方式进行存储。
该方式可以将key, value分别存储成个一个list,方便后续查找。
1.2 多层映射
还有多层映射的embedding存储,为了节省存储空间,可能会通过多个文件进行存储
这种情况下,需要存储多个list,分别是id的list,id对应的属性的list,属性对应的embedding的list。
如上两种embedding的存储方式,都可以通过tf2中已有方法进行快速的embeding查找。
2. 处理逻辑
主要处理逻辑分成两部分:
- 获取需要的embedding在embedding list中的idx
- 根据idx获取需要的embdding
2.1 获取idx
2.2 获取embdding