问题描述
我使用的是预训练模型:
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 模型类...
...看起来,至少在创建模型时,所有超参数都作为属性添加到对象上。
您是否检查过加载的模型是否是这种情况?例如,ft.dim
是否报告 300,而其他参数(如 ft.minCount
)是否报告任何有趣的内容?
更新:因为这似乎不起作用,所以看起来 _FastText
模型也包装了 nativeinternal 实例/em> (not-in-Python) FastText 模型在其 .f
属性中。 (从我之前指出的源代码中查看几行。)
并且该原生实例由 fasttext_pybind.cc
指定的模块设置。该代码看起来像是指定了一堆与元参数相关联的读写类变量 - 例如,请参见:
那么:ft.f.minCount
或 ft.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)}")
这将打印训练模型的所有超参数!