DARTS-PT: 重新思考可微分神经架构搜索中的架构选择

DARTS-PT: 重新思考可微分神经架构搜索中的架构选择

darts-pt [ICLR2021 Outstanding Paper] Rethinking Architecture Selection in Differentiable NAS 项目地址: https://gitcode.com/gh_mirrors/da/darts-pt

项目介绍

DARTS-PT 是一个基于 GitHub 的开源项目,源自 ICLR2021 的一篇杰出论文。该项目针对可微分神经架构搜索(Differentiable Architecture Search, DARTS)的方法进行了深入研究,特别关注如何改进架构选择过程。通过提出一种新的架构选择方法,它能够从超网络中提取出表现更优异的架构,并且减少DARTS中存在的部分泛化问题。项目利用 NAS-Bench-201 数据集来训练和验证这些概念,并提供了详尽的脚本以便研究人员和开发者复现实验结果。

项目快速启动

环境准备

首先,确保你的开发环境满足以下条件:

  • Python >= 3.7
  • PyTorch >= 1.5
  • tensorboard == 2.0.1
  • gpustat

安装 NAS-Bench-201 库:

pip install nas-bench-201

训练超网络 (Supernet Training)

以在 NAS-Bench-201 上运行 DARTS-PT 为例,你需要执行以下命令进行超网络训练:

bash darts-201.sh

这将开始超网络的训练过程,所有的检查点和日志文件会被保存到 /experiments/nasbench201/search-darts-201-{script_name}-{seed}/ 目录下。

架构选择 (Projection)

完成训练后,进行架构的选择或投影,使用下面的命令:

bash darts-proj-201.sh --resume_epoch 100 --resume_expid search-darts-201-1

这条命令加载训练好的模型并进行架构选择。

应用案例和最佳实践

对于不同的场景和数据集(如 CIFAR-10, CIFAR-100, SVHN),你可以调整脚本来适应特定任务,例如使用更复杂的搜索空间 s1-s4 进行搜索:

bash darts-sota.sh --space s3 --dataset cifar10

之后,采用类似的投影步骤来获得最终的架构。

典型生态项目

虽然直接在该仓库内没有提及典型的生态项目,但通过应用 DARTS-PT 的原理和技术,可以影响和改进诸多领域的神经网络设计,比如计算机视觉任务中的轻量化模型开发、自然语言处理中的序列建模等。开发者可根据自己的需求,将其应用于已有框架或库中,例如PyTorch、TensorFlow等,优化特定任务的模型结构。


以上就是 DARTS-PT 开源项目的简要指南。通过这个项目,不仅能够学习到先进的神经架构搜索技术,还可以探索如何提升模型的泛化性能和构建更为高效的神经网络结构。

darts-pt [ICLR2021 Outstanding Paper] Rethinking Architecture Selection in Differentiable NAS 项目地址: https://gitcode.com/gh_mirrors/da/darts-pt

你可能感兴趣的:(DARTS-PT: 重新思考可微分神经架构搜索中的架构选择)