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 |
计算图中的边,将在该边上替换操作。 |
必需 |