预训练的 FastText 超参数

问题描述

我使用的是预训练模型:

import fasttext.util 
fasttext.util.download_model('en',if_exists='ignore') # English 
ft = fasttext.load_model('cc.en.300.bin')

在哪里可以找到用于训练模型的超参数值的详尽列表? https://fasttext.cc/docs/en/options.html 列出了与使用不同的认值:例如,词向量的维度是 300 而不是 100(引用 https://fasttext.cc/docs/en/crawl-vectors.html 未列出所有这些)。

解决方法

通过查看 Facebook 源代码中的 _FastText Python 模型类...

https://github.com/facebookresearch/fastText/blob/a20c0d27cd0ee88a25ea0433b7f03038cd728459/python/fasttext_module/fasttext/FastText.py#L99

...看起来,至少在创建模型时,所有超参数都作为属性添加到对象上。

您是否检查过加载的模型是否是这种情况?例如,ft.dim 是否报告 300,而其他参数(如 ft.minCount)是否报告任何有趣的内容?

更新:因为这似乎不起作用,所以看起来 _FastText 模型也包装了 nativeinternal 实例/em> (not-in-Python) FastText 模型在其 .f 属性中。 (从我之前指出的源代码中查看几行。)

并且该原生实例由 fasttext_pybind.cc 指定的模块设置。该代码看起来像是指定了一堆与元参数相关联的读写类变量 - 例如,请参见:

https://github.com/facebookresearch/fastText/blob/a20c0d27cd0ee88a25ea0433b7f03038cd728459/python/fasttext_module/fasttext/pybind/fasttext_pybind.cc#L88

那么:ft.f.minCountft.f.dim 是否会从后加载的模型 ft 中返回任何有用的信息?

,

https://github.com/facebookresearch/fastText/issues/887#issuecomment-649018188 中引用 NVS Abhilash 的正确代码是:

args_obj = ft.f.getArgs()
for hparam in dir(args_obj):
    if not hparam.startswith('__'):
        print(f"{hparam} -> {getattr(args_obj,hparam)}")

这将打印训练模型的所有超参数!