局部搜索
基础类: MetaOptimizer
LocalSearch 是一个用于在神经架构搜索 (NAS) 方法中执行局部搜索的类。它选择一个随机架构,生成其邻域,如果某个邻居具有更好的性能,则移动到该邻居。如果找不到更好的邻居,则选择一个新的随机架构。
属性
名称 | 类型 | 描述 |
---|---|---|
using_step_function |
bool
|
标志,指示此优化器不存在步进函数。 |
config |
CfgNode
|
搜索过程的配置设置。 |
epochs |
int
|
搜索过程的 epoch 数量。 |
performance_metric |
Metric
|
用于评估架构的性能指标。 |
dataset |
str
|
用于评估的数据集。 |
num_init |
int
|
初始随机架构的数量。 |
nbhd |
list
|
存储当前架构邻域的列表。 |
chosen |
Graph
|
当前选择的架构。 |
best_arch |
Graph
|
迄今为止找到的最佳架构。 |
history |
torch.nn.ModuleList
|
存储架构历史记录的列表。 |
newest_child_idx |
int
|
历史记录中最近添加的子架构的索引。 |
__init__(config)
使用配置设置初始化 LocalSearch 类。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
config |
CfgNode
|
搜索过程的配置设置。 |
必需 |
adapt_search_space(search_space, scope=None, dataset_api=None)
调整局部搜索的搜索空间。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
search_space |
Graph
|
待调整的搜索空间。 |
必需 |
scope |
str
|
搜索范围。默认为 None。 |
None
|
dataset_api |
dict
|
数据集的 API。默认为 None。 |
None
|
get_checkpointables()
获取可保存检查点的模型。
返回值
名称 | 类型 | 描述 |
---|---|---|
dict |
一个字典,其中键为 "model",值为架构历史记录。 |
get_final_architecture()
从搜索中获取最终(最佳)架构。
返回值
名称 | 类型 | 描述 |
---|---|---|
Graph |
搜索过程中找到的最佳架构。 |
get_model_size()
获取模型的大小。
返回值
名称 | 类型 | 描述 |
---|---|---|
float |
模型的大小,单位为兆字节 (MB)。 |
get_op_optimizer()
获取操作的优化器。此方法在此类中未实现,调用时会引发错误。
引发
类型 | 描述 |
---|---|
NotImplementedError
|
始终,因为此方法在此类中未实现。 |
new_epoch(epoch)
在搜索过程中开始一个新的 epoch,对选择的架构执行局部搜索。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
epoch |
int
|
当前的 epoch 编号。 |
必需 |
test_statistics()
报告测试统计数据。
返回值
名称 | 类型 | 描述 |
---|---|---|
float |
最佳架构的原始性能指标。 |
train_statistics(report_incumbent=True)
报告训练后的统计数据。
参数
名称 | 类型 | 描述 | 默认值 |
---|---|---|---|
report_incumbent |
bool
|
是否报告当前最佳架构或最新架构。默认为 True。 |
True
|
返回值
名称 | 类型 | 描述 |
---|---|---|
tuple |
包含训练准确率、验证准确率、测试准确率和训练时间的元组。 |