跳到内容

GDAS

继承自: DARTSOptimizer

GDAS 优化器的实现,该优化器由 Dong 和 Yang 在论文 "Searching for a Robust Neural Architecture in Four GPU Hours" (2019) 中提出。它继承了 DARTSOptimizer 的功能,并包含 GDAS 特有的附加功能。

__init__(learning_rate=0.025, momentum=0.9, weight_decay=0.0003, grad_clip=5, unrolled=False, arch_learning_rate=0.0003, arch_weight_decay=0.001, op_optimizer='SGD', arch_optimizer='Adam', loss_criteria='CrossEntropyLoss', epochs=50, tau_min=0.1, tau_max=10.0, **kwargs)

初始化 GDASOptimizer 类的新实例。

参数

名称 类型 描述 默认值
epochs int

训练的总 epoch 数。

50
tau_max float

tau 的初始值。

10.0
tau_min float

tau 衰减到的最小值。

0.1
op_optimizer str

操作权重的优化器类型。例如,'SGD'

'SGD'
arch_optimizer str

架构权重的优化器类型。例如,'Adam'

'Adam'
loss_criteria str

损失准则。例如,'CrossEntropyLoss'

'CrossEntropyLoss'
grad_clip float

梯度裁剪。默认 None。

5
**kwargs

其他关键字参数。

{}

adapt_search_space(search_space, dataset, scope=None)

为 GDAS 架构搜索调整搜索空间。

参数

名称 类型 描述 默认值
search_space

初始搜索空间。

必需
dataset

用于训练/验证的数据集。

必需
scope

在搜索空间中更新的范围。默认为 None。

None

new_epoch(epoch)

在每个新 epoch 开始时更新边的 tau 参数。

参数

名称 类型 描述 默认值
epoch int

当前 epoch 数。

必需

remove_sampled_alphas(edge) staticmethod

从边的属性中移除采样的架构权重 (alphas)。

参数

名称 类型 描述 默认值
edge

计算图中的边,将从其中移除采样的架构权重。

必需

sample_alphas(edge, tau) staticmethod

使用由 tau 参数化的 Gumbel-Softmax 分布采样架构权重 (alphas)。

参数

名称 类型 描述 默认值
edge

计算图中的边,将在此边上设置采样的架构权重。

必需
tau torch.Tensor

控制 Gumbel-Softmax 分布温度的 tau 参数。

必需

step(data_train, data_val)

对架构权重和操作权重执行单个优化步骤。

参数

名称 类型 描述 默认值
data_train tuple

训练数据,表示为输入和标签的元组。

必需
data_val tuple

验证数据,表示为输入和标签的元组。

必需

返回值

名称 类型 描述
tuple

训练数据的 logits,验证数据的 logits,训练数据的损失,验证数据的损失。

update_ops(edge) staticmethod

用 GDAS 特定的 GDASMixedOp 替换边上的原始操作。

参数

名称 类型 描述 默认值
edge

计算图中的边,将在该边上替换操作。

必需