【问题标题】:How does a module/optimizer choose which symbols to optimize?模块/优化器如何选择要优化的符号?
【发布时间】:2017-01-17 19:29:14
【问题描述】:

我意识到我可以制作自己的模块/优化器来执行此操作,但是可以告诉现有的 mxnet 模块只优化变量的子集吗?

按照同样的思路,模块如何确定要优化的符号?例如,与 MXNet 中的 tensorflow 不同,要优化的数据和变量都只是“变量”符号,但不知何故,MXNet 只影响实际变量的 NDArray,而不影响数据 NDArray。它是如何检查的?它使用命名约定吗?如果是这样,那是什么约定? (任何名称中包含“数据”的符号未优化?)

【问题讨论】:

    标签: mxnet


    【解决方案1】:

    虽然我没有测试过,但是看看文档和源码,我想我有答案了。

    在模块构造函数中,有一个名为data_names 的默认参数,它是符号名称的字符串列表,这些符号是数据对象,不需要优化(与标签类似)。此外,还有一个名为fixed_param_names 的默认参数,它是一个字符串列表,指定了一个不被优化的变量的黑名单。

    【讨论】:

    • 另一种选择可能是使用优化器的set_lr_mult api,可用于控制特定参数的学习率。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-27
    • 2011-06-09
    • 1970-01-01
    • 2020-06-21
    • 1970-01-01
    • 1970-01-01
    • 2022-07-19
    相关资源
    最近更新 更多