随机搜索
基类:MetaOptimizer
RandomSearch 是一个类,实现了用于神经架构搜索(NAS)的随机搜索算法。它派生自 MetaOptimizer 类。随机搜索通过随机采样 'k' 个架构并对其进行 'n' 个 epoch 的训练来完成,然后选择最佳架构。在 DARTS 论文中,对于 CIFAR-10 数据集,'k' 等于 24,'n' 等于 100。
属性
名称 | 类型 | 描述 |
---|---|---|
using_step_function |
bool
|
指示此优化器没有步进函数的标志。 |
performance_metric |
Metric
|
用于评估架构的性能指标。 |
dataset |
str
|
用于评估的数据集。 |
fidelity |
int
|
每个采样架构的训练 epoch 数。 |
device |
torch.device
|
用于计算的设备,可以是 CUDA 或 CPU。 |
sampled_archs |
list
|
用于存储采样架构的列表。 |
history |
torch.nn.ModuleList
|
用于存储架构历史记录的列表。 |
__init__(config)
使用配置设置初始化 RandomSearch 类。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
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_op_optimizer()
获取操作的优化器。此方法在此类中未实现,调用时会引发错误。
引发
类型 | 描述 |
---|---|
NotImplementedError
|
总是,因为此方法在此类中未实现。 |
new_epoch(epoch)
在搜索过程中开始一个新的 epoch,采样一个新的架构进行训练。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
epoch |
int
|
当前的 epoch 编号。 |
必需 |
test_statistics()
报告测试统计信息。
返回值
名称 | 类型 | 描述 |
---|---|---|
float |
最佳架构的原始性能指标。 |
train_statistics(report_incumbent=True)
报告训练后的统计信息。
参数
名称 | 类型 | 描述 | 默认 |
---|---|---|---|
report_incumbent |
bool
|
是否报告当前的最佳架构或最近的架构。默认为 True。 |
True
|
返回值
名称 | 类型 | 描述 |
---|---|---|
tuple |
一个包含训练准确率、验证准确率、测试准确率和训练时间的元组。 |