【问题标题】:Pre-trained FastText hyperparameters预训练的 FastText 超参数
【发布时间】:2021-06-03 23:12:40
【问题描述】:

我使用的是预训练模型:

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 并没有全部列出)。

【问题讨论】:

    标签: nlp fasttext


    【解决方案1】:

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

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

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

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

    更新:由于这似乎不起作用,它看起来也像 _FastText 模型包装了 nativeinternal 实例>(不在 Python 中)其.f 属性中的 FastText 模型。 (参见我之前指出的源代码中的几行。)

    并且该native-instance 由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 返回任何有用的信息?

    【讨论】:

    • 不幸的是,ft.minCount (as ft.dim) 返回错误:_FastText' object has no attribute 'minCount',我不知道如何检查所有超参数。这听起来像一个愚蠢的问题,但我找不到任何解决方案!
    • 抱歉没有帮助;根据对 FastText Python 支持源代码的快速扫描,请参阅我在答案中的更新,了解更多值得尝试的事情。
    • 更新也不起作用,我得到了与has no attribute相同的错误。幸运的是,我找到了解决方案!还是谢谢你!
    • 啊哈,你得看看ft.f.getArgs()返回的对象。感谢您发布您找到的解决方案。
    【解决方案2】:

    引用来自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)}")
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 2021-12-19
      • 2021-03-29
      • 1970-01-01
      • 2019-08-20
      • 2019-02-04
      • 2021-02-18
      相关资源
      最近更新 更多