hparam

常规符号的标准超参数类。

Hparam

DynamicModule 的一个基础超参数。

class Hparam

基础类:object

DynamicModule 的一个基础超参数。

这种Hparam的一个例子可能是具有身份依赖关系的hparam。

ActiveSlice

Union[slice, LongTensor] 的别名

Importance

Optional[Tensor] 的别名

ImportanceEstimator

Callable[[], Optional[Tensor]] 的别名

__init__(choices, original=None)

使用原始值和选择初始化Hparam。

Parameters:
  • choices (Sequence[Tuple[int, ...] | int | float | CustomHPType]) –

  • 原始 (元组[整数, ...] | 整数 | 浮点数 | 自定义HP类型 | ) –

Return type:

property active: Tuple[int, ...] | int | float | CustomHPType

返回当前活动的值。

property active_slice: slice | LongTensor

返回当前活动的排序索引或与活动值对应的切片。

property choices: Sequence[Tuple[int, ...] | int | float | CustomHPType]

返回可用的选项。

enforce_order(order=None)

存储对此订单的引用,并为active_slice强制执行订单。

此功能使用户能够强制执行active_slice的生成顺序。

示例

如果hparam的当前值为16且最大值为32,默认情况下active_slice将是slice(16),这相当于range(16)(尽管更快)。当设置了order时,active_slice将返回self._order[:16]

待办事项:我们是否需要一个循环检测器在这里?

Parameters:

order (Tensor | None) –

Return type:

property importance: Tensor | None

计算并返回hparam所代表的特征之间的归一化重要性。

请注意,重要性表示为一个1d张量,其长度等于hparam的最大选择(Hparam.max)。

例如,如果hparam表示Conv2d层的in_channels数量,那么重要性应该是一个1d张量,其重要性分数的长度等于in_channels的数量。

请注意,每个模块都应注册适当的重要性回调函数,以计算与hparam选择相关的实际重要性。如果hparam没有重要性的概念,此函数将返回None。

property is_configurable

返回hparam是否可配置。

property is_sortable

返回 hparam 是否可排序。

property max: Tuple[int, ...] | int | float | CustomHPType

从选择中返回最大值。

property min: Tuple[int, ...] | int | float | CustomHPType

从选择中返回最小值。

property original: Tuple[int, ...] | int | float | CustomHPType

从选择中返回原始值。

register_importance(importance_estimator)

为hparam注册重要性估计器。

此估计器不接受任何参数,并应返回一个单一参数(可选的一维张量),表示hparam所代表的特征之间的重要性。如果返回的参数是张量,则张量的长度必须等于hparam的最大选择(Hparam.max)。

Parameters:

importance_estimator (Callable[[], Tensor | None]) –