tf.lookup研读
tf.lookup模块就是tf的字典功能,方便在大量备选的元素中根据key进行快速筛选。
1. 主要构成
tf.lookup模块包含了5个class和1个Module. Module中包含两个实验性质的class.
同样,这几个class可以按照我们的使用习惯,简单的分成3类.
分类 | Class | 说明 |
---|---|---|
从tensor生成table | KeyValueTensorInitializer | 根据k,v对生成table initializer |
从tensor生成table | StaticHashTable | 从table initializer生成可以检索的table |
从tensor生成table | StaticVocabularyTable | |
从文件内容生成table | TextFileInitializer | |
从文件内容生成table | TextFileIndex | |
先生成可变table | MutableHashTable | |
先生成可变table | DenseHashTable |
2. 从tensor生成table
通过现有的tensor生成可以检索的table,需要提供现成的key,val数据,经过KeyValueTensorInitializer生成init后,便可以通过StaticHashTable或StaticVocabularyTable生成table。
备注:
- keys, vals可以式tensor,也可以是普通的list,在init处理过程中会进行convert_to_tensor
- 检索过程中(table.lookup),输入的input_tensor必须是tensor,因为在检索过程中会进行type的检验
- 如果声明init的时候使用python array,同时没有显式的声明dtype的时候,模型的dtype是tf.string
3. 从文件内容生成table
当你有一个有<key, val>格式组成文件的时候,也可以通过tf自带的api将文件里的内容直接生成可以检索的table数据。
4. 生成可变table
上述api都需要通过预先提供的数据生成一个固定的table,没有遇到过的key,只能通过default_value进行取值。
这种table相对比较死板,mutable_table解决的就是这种问题,可以生成一个能够随时增加元素的table,使用更便捷,更接近原始的python-array。
tf.lookup研读
https://zermzhang.github.io/2022/06/16/tensorflow/tensorflow研读/tf.lookup研读/