本项目是百度大数据实验室(BDL)分层神经架构搜索项目(HINAS)自动发现的模型,利用深度增强学习完成设计。系统由两部分组成,第一部分是网络结构的编码器,第二部分是网络结构的评测器。
下载安装命令
## CPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/cpu paddlepaddle
## GPU版本安装命令
pip install -f https://paddlepaddle.org.cn/pip/oschina/gpu paddlepaddle-gpu
编码器通常以 RNN 的方式把网络结构进行编码,然后评测器把编码的结果拿去进行训练和评测,拿到包括准确率、模型大小在内的一些指标,反馈给编码器,编码器进行修改,再次编码,如此迭代。经过若干次迭代以后,最终得到一个设计好的模型。
为了性能考虑,迭代中用到的训练数据通常是几万张规模的数据集(比如 CIFAR-10),模型设计结束后,会用大规模数据(比如 ImageNet)重新训练一次,进一步优化参数。具体原理可以参考以下链接:解读百度AutoDL
本项目主要是使用搜索出来的模型结构在CIFAR-10数据上进行训练和验证主要的目录结构如下:
|--root
|--|--build # 该目录下的文件用于根据不同的配置构建网络
|--|--|--layers.py # 网络中各种层的实现
|--|--|--resnet_base.py # 带残差的结构
|--|--|--ops.py # 调用layers.py中实现的各种层组成op
|--|--|--vgg_base.py # 不带残差的结构
|--|--tokens # 通过二进制存储的各种模型的配置
|--|--dataset # cifar数据集
|--|--model # 训练完成后保存的可以用于infer的固化模型
|--|--test # 用于存放需要测试的图像
|--|--reader.py # 数据集读取部分
|--|--train_hinas_res.py # 用于训练带残差结构的网络
|--|--train_hinas.py # 用于训练不带残差结构的网络
|--|--nn_paddle.py # 具体的训练逻辑以及模型保存写在这个文件中
|--|--infer.py # 用于对test中的图片进行预测,需要修改文件中图片的路径
In[6]
# 从work中把代码解压出来
!tar xzf data/data9705/cifar-10-python.tar.gz -C dataset/cifar/
mv: cannot move '/home/aistudio/HiNAS_models/build' to '/home/aistudio/build': Directory not empty
mv: cannot move '/home/aistudio/HiNAS_models/tokens' to '/home/aistudio/tokens': Directory not empty
rm: cannot remove 'HiNAS_models': Is a directory
In[1]