项目简介
本项目是百度大数据实验室(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中的图片进行预测,需要修改文件中图片的路径
# 从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
# 安装程序依赖的库文件
!pip install absl-py
DEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 won't be maintained after that date. A future version of pip will drop support for Python 2.7.
Looking in indexes: https://pypi.mirrors.ustc.edu.cn/simple/
Collecting absl-py
Downloading https://mirrors.tuna.tsinghua.edu.cn/pypi/web/packages/da/3f/9b0355080b81b15ba6a9ffcf1f5ea39e307a2778b2f2dc8694724e8abd5b/absl-py-0.7.1.tar.gz (99kB)
100% |████████████████████████████████| 102kB 9.9MB/s ta 0:00:01
Requirement already satisfied: six in /opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages (from absl-py) (1.12.0)
Requirement already satisfied: enum34 in /opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages (from absl-py) (1.1.6)
Building wheels for collected packages: absl-py
Building wheel for absl-py (setup.py) ... done
Stored in directory: /home/aistudio/.cache/pip/wheels/cc/27/b8/80769636fbf30d2fddba4c6e149163c0a319ba2dfc73f6e660
Successfully built absl-py
Installing collected packages: absl-py
Successfully installed absl-py-0.7.1
本目录下包含6个图像分类模型,都是百度大数据实验室 Hierarchical Neural Architecture Search (HiNAS) 项目通过机器自动发现的模型,在CIFAR-10数据集上达到96.1%的准确率。这6个模型分为两类,前3个没有skip link,分别命名为 HiNAS 0-2号,后三个网络带有skip link,功能类似于Resnet中的shortcut connection,分别命名 HiNAS 3-5号
使用train_hinas.py --model=model_id来训练没有skip link的HiNAS 0-2号网络模型,model_id代表0,1,2中的一个
!python train_hinas.py --model=0
learning rate: 0.100000 -> 0.000100, cosine annealing epoch: 15 batch size: 128 L2 decay: 0.000400 Token is 7,7,2,5,2,2,8,8,2,3,2,10,8,2,9,11,9,6,4,4,10 sep_3x3 -> shape (-1L, 64L, 32L, 32L) sep_3x3 -> shape (-1L, 64L, 32L, 32L) conv_3x3 -> shape (-1L, 128L, 16L, 16L) ============ conv_1x3_3x1 -> shape (-1L, 128L, 16L, 16L) conv_3x3 -> shape (-1L, 128L, 16L, 16L) conv_3x3 -> shape (-1L, 128L, 16L, 16L) maxpool_2x2 -> shape (-1L, 256L, 8L, 8L) ============ maxpool_2x2 -> shape (-1L, 256L, 8L, 8L) conv_3x3 -> shape (-1L, 256L, 8L, 8L) dilated_2x2 -> shape (-1L, 256L, 8L, 8L) conv_3x3 -> shape (-1L, 256L, 8L, 8L) avgpool_2x2 -> shape (-1L, 512L, 4L, 4L) ============ maxpool_2x2 -> shape (-1L, 512L, 4L, 4L) conv_3x3 -> shape (-1L, 512L, 4L, 4L) maxpool_3x3 -> shape (-1L, 512L, 4L, 4L) avgpool_3x3 -> shape (-1L, 512L, 4L, 4L) maxpool_3x3 -> shape (-1L, 1024L, 2L, 2L) ============ sep_2x2 -> shape (-1L, 1024L, 2L, 2L) conv_1x2_2x1 -> shape (-1L, 1024L, 2L, 2L) conv_1x2_2x1 -> shape (-1L, 1024L, 2L, 2L) avgpool_2x2 -> shape (-1L, 1024L, 2L, 2L) W0809 11:16:19.514256 829 device_context.cc:259] Please NOTE: device: 0, CUDA Capability: 70, Driver API Version: 9.2, Runtime API Version: 9.0 W0809 11:16:19.518366 829 device_context.cc:267] device: 0, cuDNN Version: 7.3. Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 0, Step 0, Loss 2.482643, Acc 0.140625 Epoch 0, Step 20, Loss 2.482619, Acc 0.173828 Epoch 0, Step 40, Loss 2.200089, Acc 0.238281 Epoch 0, Step 60, Loss 2.087755, Acc 0.255469 Epoch 0, Step 80, Loss 2.011178, Acc 0.279687 Epoch 0, Step 100, Loss 1.957202, Acc 0.301953 Epoch 0, Step 120, Loss 1.931626, Acc 0.333203 Epoch 0, Step 140, Loss 1.856620, Acc 0.328516 Epoch 0, Step 160, Loss 1.811810, Acc 0.366797 Epoch 0, Step 180, Loss 1.827287, Acc 0.367188 Epoch 0, Step 200, Loss 1.816670, Acc 0.365625 Epoch 0, Step 220, Loss 1.768780, Acc 0.387500 Epoch 0, Step 240, Loss 1.767242, Acc 0.378516 Epoch 0, Step 260, Loss 1.731364, Acc 0.390234 Epoch 0, Step 280, Loss 1.708052, Acc 0.417188 Epoch 0, Step 300, Loss 1.709072, Acc 0.421484 Epoch 0, Step 320, Loss 1.632304, Acc 0.410156 Epoch 0, Step 340, Loss 1.638918, Acc 0.416016 Epoch 0, Step 360, Loss 1.555294, Acc 0.434766 Epoch 0, Step 380, Loss 1.529093, Acc 0.461719 Reading file cifar-10-batches-py/test_batch Test with epoch 0, Loss 1.537156, Acc 0.445214 Best acc 0.445214 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 1, Step 0, Loss 1.557167, Acc 0.439205 Epoch 1, Step 20, Loss 1.497260, Acc 0.455469 Epoch 1, Step 40, Loss 1.411260, Acc 0.481641 Epoch 1, Step 60, Loss 1.394606, Acc 0.506641 Epoch 1, Step 80, Loss 1.401698, Acc 0.496875 Epoch 1, Step 100, Loss 1.397601, Acc 0.501953 Epoch 1, Step 120, Loss 1.382812, Acc 0.509375 Epoch 1, Step 140, Loss 1.349297, Acc 0.523438 Epoch 1, Step 160, Loss 1.380840, Acc 0.502734 Epoch 1, Step 180, Loss 1.303443, Acc 0.542188 Epoch 1, Step 200, Loss 1.280069, Acc 0.546094 Epoch 1, Step 220, Loss 1.315975, Acc 0.528516 Epoch 1, Step 240, Loss 1.268604, Acc 0.554688 Epoch 1, Step 260, Loss 1.274772, Acc 0.545313 Epoch 1, Step 280, Loss 1.176123, Acc 0.580859 Epoch 1, Step 300, Loss 1.226039, Acc 0.558594 Epoch 1, Step 320, Loss 1.226553, Acc 0.561328 Epoch 1, Step 340, Loss 1.189370, Acc 0.590625 Epoch 1, Step 360, Loss 1.226365, Acc 0.559766 Epoch 1, Step 380, Loss 1.207760, Acc 0.582031 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 2, Step 0, Loss 1.167169, Acc 0.594744 Epoch 2, Step 20, Loss 1.141616, Acc 0.598828 Epoch 2, Step 40, Loss 1.163119, Acc 0.596875 Epoch 2, Step 60, Loss 1.112664, Acc 0.614844 Epoch 2, Step 80, Loss 1.092213, Acc 0.612109 Epoch 2, Step 100, Loss 1.099594, Acc 0.598437 Epoch 2, Step 120, Loss 1.140377, Acc 0.598828 Epoch 2, Step 140, Loss 1.112193, Acc 0.609766 Epoch 2, Step 160, Loss 1.073125, Acc 0.625781 Epoch 2, Step 180, Loss 1.083796, Acc 0.614062 Epoch 2, Step 200, Loss 1.021422, Acc 0.638672 Epoch 2, Step 220, Loss 1.031961, Acc 0.625781 Epoch 2, Step 240, Loss 1.078565, Acc 0.620703 Epoch 2, Step 260, Loss 1.025523, Acc 0.654297 Epoch 2, Step 280, Loss 0.989794, Acc 0.657422 Epoch 2, Step 300, Loss 1.036911, Acc 0.641016 Epoch 2, Step 320, Loss 0.973976, Acc 0.664062 Epoch 2, Step 340, Loss 1.052846, Acc 0.639844 Epoch 2, Step 360, Loss 0.999093, Acc 0.660937 Epoch 2, Step 380, Loss 0.995234, Acc 0.655859 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 3, Step 0, Loss 1.013907, Acc 0.665625 Epoch 3, Step 20, Loss 1.013109, Acc 0.648438 Epoch 3, Step 40, Loss 0.969164, Acc 0.669922 Epoch 3, Step 60, Loss 0.976983, Acc 0.660547 Epoch 3, Step 80, Loss 0.947173, Acc 0.673828 Epoch 3, Step 100, Loss 0.928780, Acc 0.687891 Epoch 3, Step 120, Loss 0.925856, Acc 0.683203 Epoch 3, Step 140, Loss 0.966862, Acc 0.655469 Epoch 3, Step 160, Loss 0.928892, Acc 0.676172 Epoch 3, Step 180, Loss 0.957283, Acc 0.673047 Epoch 3, Step 200, Loss 0.899448, Acc 0.691016 Epoch 3, Step 220, Loss 0.947698, Acc 0.667188 Epoch 3, Step 240, Loss 0.921045, Acc 0.683203 Epoch 3, Step 260, Loss 0.878503, Acc 0.694531 Epoch 3, Step 280, Loss 0.897871, Acc 0.694141 Epoch 3, Step 300, Loss 0.882109, Acc 0.691797 Epoch 3, Step 320, Loss 0.921019, Acc 0.687109 Epoch 3, Step 340, Loss 0.866837, Acc 0.707422 Epoch 3, Step 360, Loss 0.879969, Acc 0.694922 Epoch 3, Step 380, Loss 0.869022, Acc 0.696875 Reading file cifar-10-batches-py/test_batch Test with epoch 3, Loss 0.760786, Acc 0.740111 Best acc 0.740111 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 4, Step 0, Loss 0.887936, Acc 0.686080 Epoch 4, Step 20, Loss 0.862115, Acc 0.712891 Epoch 4, Step 40, Loss 0.880331, Acc 0.693359 Epoch 4, Step 60, Loss 0.904162, Acc 0.693750 Epoch 4, Step 80, Loss 0.874216, Acc 0.697656 Epoch 4, Step 100, Loss 0.839584, Acc 0.708594 Epoch 4, Step 120, Loss 0.869627, Acc 0.686719 Epoch 4, Step 140, Loss 0.851685, Acc 0.707812 Epoch 4, Step 160, Loss 0.827239, Acc 0.714453 Epoch 4, Step 180, Loss 0.849189, Acc 0.711328 Epoch 4, Step 200, Loss 0.855910, Acc 0.711328 Epoch 4, Step 220, Loss 0.807521, Acc 0.723047 Epoch 4, Step 240, Loss 0.857397, Acc 0.710156 Epoch 4, Step 260, Loss 0.814342, Acc 0.718359 Epoch 4, Step 280, Loss 0.828174, Acc 0.715625 Epoch 4, Step 300, Loss 0.787920, Acc 0.730078 Epoch 4, Step 320, Loss 0.806294, Acc 0.732031 Epoch 4, Step 340, Loss 0.837816, Acc 0.698047 Epoch 4, Step 360, Loss 0.755335, Acc 0.741406 Epoch 4, Step 380, Loss 0.789317, Acc 0.723047 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 5, Step 0, Loss 0.767572, Acc 0.737358 Epoch 5, Step 20, Loss 0.815318, Acc 0.715625 Epoch 5, Step 40, Loss 0.801015, Acc 0.731641 Epoch 5, Step 60, Loss 0.806025, Acc 0.721484 Epoch 5, Step 80, Loss 0.790205, Acc 0.725781 Epoch 5, Step 100, Loss 0.791391, Acc 0.730859 Epoch 5, Step 120, Loss 0.791687, Acc 0.723828 Epoch 5, Step 140, Loss 0.789758, Acc 0.727344 Epoch 5, Step 160, Loss 0.782047, Acc 0.727344 Epoch 5, Step 180, Loss 0.712768, Acc 0.769141 Epoch 5, Step 200, Loss 0.741269, Acc 0.742969 Epoch 5, Step 220, Loss 0.771898, Acc 0.734375 Epoch 5, Step 240, Loss 0.730375, Acc 0.750391 Epoch 5, Step 260, Loss 0.763598, Acc 0.747266 Epoch 5, Step 280, Loss 0.787794, Acc 0.730859 Epoch 5, Step 300, Loss 0.750475, Acc 0.741016 Epoch 5, Step 320, Loss 0.687740, Acc 0.761719 Epoch 5, Step 340, Loss 0.753891, Acc 0.745703 Epoch 5, Step 360, Loss 0.704342, Acc 0.749219 Epoch 5, Step 380, Loss 0.721551, Acc 0.743359 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 6, Step 0, Loss 0.735215, Acc 0.758665 Epoch 6, Step 20, Loss 0.729224, Acc 0.751172 Epoch 6, Step 40, Loss 0.751871, Acc 0.739453 Epoch 6, Step 60, Loss 0.705129, Acc 0.754687 Epoch 6, Step 80, Loss 0.702012, Acc 0.764844 Epoch 6, Step 100, Loss 0.704884, Acc 0.762891 Epoch 6, Step 120, Loss 0.671007, Acc 0.768750 Epoch 6, Step 140, Loss 0.738879, Acc 0.750000 Epoch 6, Step 160, Loss 0.697422, Acc 0.761719 Epoch 6, Step 180, Loss 0.719644, Acc 0.745313 Epoch 6, Step 200, Loss 0.712688, Acc 0.750781 Epoch 6, Step 220, Loss 0.719856, Acc 0.748047 Epoch 6, Step 240, Loss 0.684880, Acc 0.772656 Epoch 6, Step 260, Loss 0.731527, Acc 0.746875 Epoch 6, Step 280, Loss 0.689584, Acc 0.764453 Epoch 6, Step 300, Loss 0.680511, Acc 0.771875 Epoch 6, Step 320, Loss 0.722743, Acc 0.756641 Epoch 6, Step 340, Loss 0.665582, Acc 0.775781 Epoch 6, Step 360, Loss 0.673832, Acc 0.774219 Epoch 6, Step 380, Loss 0.679124, Acc 0.768750 Reading file cifar-10-batches-py/test_batch Test with epoch 6, Loss 0.603901, Acc 0.793710 Best acc 0.793710 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 7, Step 0, Loss 0.727439, Acc 0.755114 Epoch 7, Step 20, Loss 0.653248, Acc 0.771875 Epoch 7, Step 40, Loss 0.644015, Acc 0.777344 Epoch 7, Step 60, Loss 0.638839, Acc 0.782031 Epoch 7, Step 80, Loss 0.655005, Acc 0.784375 Epoch 7, Step 100, Loss 0.685182, Acc 0.764063 Epoch 7, Step 120, Loss 0.638514, Acc 0.784766 Epoch 7, Step 140, Loss 0.678165, Acc 0.765625 Epoch 7, Step 160, Loss 0.653044, Acc 0.767187 Epoch 7, Step 180, Loss 0.696662, Acc 0.754297 Epoch 7, Step 200, Loss 0.601996, Acc 0.795313 Epoch 7, Step 220, Loss 0.627005, Acc 0.790625 Epoch 7, Step 240, Loss 0.658935, Acc 0.773438 Epoch 7, Step 260, Loss 0.682445, Acc 0.773438 Epoch 7, Step 280, Loss 0.619083, Acc 0.795313 Epoch 7, Step 300, Loss 0.586498, Acc 0.798828 Epoch 7, Step 320, Loss 0.689424, Acc 0.768359 Epoch 7, Step 340, Loss 0.627145, Acc 0.790625 Epoch 7, Step 360, Loss 0.603221, Acc 0.791797 Epoch 7, Step 380, Loss 0.637147, Acc 0.787891 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 8, Step 0, Loss 0.643534, Acc 0.784233 Epoch 8, Step 20, Loss 0.596453, Acc 0.794922 Epoch 8, Step 40, Loss 0.609944, Acc 0.796875 Epoch 8, Step 60, Loss 0.591742, Acc 0.804688 Epoch 8, Step 80, Loss 0.587857, Acc 0.800781 Epoch 8, Step 100, Loss 0.615226, Acc 0.790625 Epoch 8, Step 120, Loss 0.603721, Acc 0.793359 Epoch 8, Step 140, Loss 0.609922, Acc 0.785937 Epoch 8, Step 160, Loss 0.632628, Acc 0.789844 Epoch 8, Step 180, Loss 0.620946, Acc 0.789453 Epoch 8, Step 200, Loss 0.573387, Acc 0.805078 Epoch 8, Step 220, Loss 0.581413, Acc 0.808203 Epoch 8, Step 240, Loss 0.609865, Acc 0.789453 Epoch 8, Step 260, Loss 0.575533, Acc 0.800391 Epoch 8, Step 280, Loss 0.594663, Acc 0.797266 Epoch 8, Step 300, Loss 0.614344, Acc 0.793359 Epoch 8, Step 320, Loss 0.591097, Acc 0.803516 Epoch 8, Step 340, Loss 0.581555, Acc 0.794531 Epoch 8, Step 360, Loss 0.589037, Acc 0.800000 Epoch 8, Step 380, Loss 0.588127, Acc 0.791797 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 9, Step 0, Loss 0.520190, Acc 0.830256 Epoch 9, Step 20, Loss 0.547372, Acc 0.809766 Epoch 9, Step 40, Loss 0.593483, Acc 0.801953 Epoch 9, Step 60, Loss 0.542595, Acc 0.816016 Epoch 9, Step 80, Loss 0.547427, Acc 0.813672 Epoch 9, Step 100, Loss 0.540795, Acc 0.814453 Epoch 9, Step 120, Loss 0.576289, Acc 0.800000 Epoch 9, Step 140, Loss 0.511006, Acc 0.828906 Epoch 9, Step 160, Loss 0.541928, Acc 0.818750 Epoch 9, Step 180, Loss 0.517280, Acc 0.823828 Epoch 9, Step 200, Loss 0.555504, Acc 0.817578 Epoch 9, Step 220, Loss 0.551557, Acc 0.808594 Epoch 9, Step 240, Loss 0.520490, Acc 0.819922 Epoch 9, Step 260, Loss 0.563156, Acc 0.812109 Epoch 9, Step 280, Loss 0.542105, Acc 0.813281 Epoch 9, Step 300, Loss 0.520226, Acc 0.818750 Epoch 9, Step 320, Loss 0.513270, Acc 0.817187 Epoch 9, Step 340, Loss 0.538814, Acc 0.820703 Epoch 9, Step 360, Loss 0.511943, Acc 0.818750 Epoch 9, Step 380, Loss 0.513404, Acc 0.817969 Reading file cifar-10-batches-py/test_batch Test with epoch 9, Loss 0.431279, Acc 0.855123 Best acc 0.855123 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 10, Step 0, Loss 0.506999, Acc 0.823011 Epoch 10, Step 20, Loss 0.490679, Acc 0.835938 Epoch 10, Step 40, Loss 0.514969, Acc 0.823047 Epoch 10, Step 60, Loss 0.478587, Acc 0.835156 Epoch 10, Step 80, Loss 0.514832, Acc 0.826953 Epoch 10, Step 100, Loss 0.500985, Acc 0.826172 Epoch 10, Step 120, Loss 0.508618, Acc 0.824609 Epoch 10, Step 140, Loss 0.476442, Acc 0.842969 Epoch 10, Step 160, Loss 0.483726, Acc 0.827734 Epoch 10, Step 180, Loss 0.522007, Acc 0.826172 Epoch 10, Step 200, Loss 0.499444, Acc 0.828125 Epoch 10, Step 220, Loss 0.484623, Acc 0.837109 Epoch 10, Step 240, Loss 0.471074, Acc 0.835547 Epoch 10, Step 260, Loss 0.503162, Acc 0.826563 Epoch 10, Step 280, Loss 0.471645, Acc 0.846094 Epoch 10, Step 300, Loss 0.450638, Acc 0.846484 Epoch 10, Step 320, Loss 0.439053, Acc 0.851953 Epoch 10, Step 340, Loss 0.482043, Acc 0.833984 Epoch 10, Step 360, Loss 0.484722, Acc 0.827344 Epoch 10, Step 380, Loss 0.494961, Acc 0.823047 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 11, Step 0, Loss 0.446823, Acc 0.852841 Epoch 11, Step 20, Loss 0.456949, Acc 0.840625 Epoch 11, Step 40, Loss 0.445955, Acc 0.842578 Epoch 11, Step 60, Loss 0.484455, Acc 0.828906 Epoch 11, Step 80, Loss 0.430885, Acc 0.857031 Epoch 11, Step 100, Loss 0.449789, Acc 0.846484 Epoch 11, Step 120, Loss 0.463586, Acc 0.841406 Epoch 11, Step 140, Loss 0.443231, Acc 0.844531 Epoch 11, Step 160, Loss 0.470603, Acc 0.842578 Epoch 11, Step 180, Loss 0.450399, Acc 0.846484 Epoch 11, Step 200, Loss 0.475154, Acc 0.837891 Epoch 11, Step 220, Loss 0.407791, Acc 0.858594 Epoch 11, Step 240, Loss 0.448022, Acc 0.847656 Epoch 11, Step 260, Loss 0.444676, Acc 0.845312 Epoch 11, Step 280, Loss 0.451156, Acc 0.843359 Epoch 11, Step 300, Loss 0.458283, Acc 0.840234 Epoch 11, Step 320, Loss 0.437371, Acc 0.851172 Epoch 11, Step 340, Loss 0.412547, Acc 0.862109 Epoch 11, Step 360, Loss 0.407413, Acc 0.859766 Epoch 11, Step 380, Loss 0.422333, Acc 0.852344 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 12, Step 0, Loss 0.440087, Acc 0.849290 Epoch 12, Step 20, Loss 0.414874, Acc 0.856250 Epoch 12, Step 40, Loss 0.425026, Acc 0.852344 Epoch 12, Step 60, Loss 0.400751, Acc 0.862500 Epoch 12, Step 80, Loss 0.421488, Acc 0.855078 Epoch 12, Step 100, Loss 0.393819, Acc 0.865234 Epoch 12, Step 120, Loss 0.396206, Acc 0.866797 Epoch 12, Step 140, Loss 0.434174, Acc 0.847656 Epoch 12, Step 160, Loss 0.416802, Acc 0.852734 Epoch 12, Step 180, Loss 0.390549, Acc 0.863281 Epoch 12, Step 200, Loss 0.424427, Acc 0.865625 Epoch 12, Step 220, Loss 0.390423, Acc 0.869141 Epoch 12, Step 240, Loss 0.407088, Acc 0.861328 Epoch 12, Step 260, Loss 0.384563, Acc 0.870703 Epoch 12, Step 280, Loss 0.397529, Acc 0.865234 Epoch 12, Step 300, Loss 0.380041, Acc 0.870313 Epoch 12, Step 320, Loss 0.381130, Acc 0.870313 Epoch 12, Step 340, Loss 0.395238, Acc 0.866797 Epoch 12, Step 360, Loss 0.394560, Acc 0.863281 Epoch 12, Step 380, Loss 0.367769, Acc 0.881250 Reading file cifar-10-batches-py/test_batch Test with epoch 12, Loss 0.324720, Acc 0.889735 Best acc 0.889735 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 13, Step 0, Loss 0.367707, Acc 0.877131 Epoch 13, Step 20, Loss 0.395224, Acc 0.860547 Epoch 13, Step 40, Loss 0.390620, Acc 0.860547 Epoch 13, Step 60, Loss 0.368550, Acc 0.871094 Epoch 13, Step 80, Loss 0.384478, Acc 0.869922 Epoch 13, Step 100, Loss 0.377339, Acc 0.871094 Epoch 13, Step 120, Loss 0.362927, Acc 0.876172 Epoch 13, Step 140, Loss 0.389359, Acc 0.871484 Epoch 13, Step 160, Loss 0.373148, Acc 0.868750 Epoch 13, Step 180, Loss 0.374814, Acc 0.871094 Epoch 13, Step 200, Loss 0.383265, Acc 0.867188 Epoch 13, Step 220, Loss 0.394122, Acc 0.865234 Epoch 13, Step 240, Loss 0.375874, Acc 0.864453 Epoch 13, Step 260, Loss 0.344002, Acc 0.881250 Epoch 13, Step 280, Loss 0.347626, Acc 0.878906 Epoch 13, Step 300, Loss 0.344454, Acc 0.877344 Epoch 13, Step 320, Loss 0.371733, Acc 0.872266 Epoch 13, Step 340, Loss 0.333492, Acc 0.891406 Epoch 13, Step 360, Loss 0.346991, Acc 0.876172 Epoch 13, Step 380, Loss 0.366274, Acc 0.871094 Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 14, Step 0, Loss 0.367616, Acc 0.876278 Epoch 14, Step 20, Loss 0.395016, Acc 0.866406 Epoch 14, Step 40, Loss 0.365654, Acc 0.875000 Epoch 14, Step 60, Loss 0.363018, Acc 0.878125 Epoch 14, Step 80, Loss 0.368992, Acc 0.878516 Epoch 14, Step 100, Loss 0.351710, Acc 0.875000 Epoch 14, Step 120, Loss 0.345059, Acc 0.883984 Epoch 14, Step 140, Loss 0.358738, Acc 0.875391 Epoch 14, Step 160, Loss 0.353570, Acc 0.881641 Epoch 14, Step 180, Loss 0.331230, Acc 0.882422 Epoch 14, Step 200, Loss 0.343643, Acc 0.884375 Epoch 14, Step 220, Loss 0.354200, Acc 0.884375 Epoch 14, Step 240, Loss 0.372267, Acc 0.871484 Epoch 14, Step 260, Loss 0.347190, Acc 0.881641 Epoch 14, Step 280, Loss 0.364246, Acc 0.871875 Epoch 14, Step 300, Loss 0.333497, Acc 0.892187 Epoch 14, Step 320, Loss 0.364476, Acc 0.873438 Epoch 14, Step 340, Loss 0.354703, Acc 0.873047 Epoch 14, Step 360, Loss 0.375735, Acc 0.869141 Epoch 14, Step 380, Loss 0.361984, Acc 0.875781 Reading file cifar-10-batches-py/test_batch Test with epoch 14, Loss 0.311640, Acc 0.894877 Best acc 0.894877
使用train_hinas_res.py --model=m_id来训练带有skip link的HiNAS 3-5号网络模型,model_id的取值和实际对应关系为:0,1,2分别代表3,4,5
!python train_hinas_res.py --model=0
learning rate: 0.100000 -> 0.000100, cosine annealing epoch: 200 batch size: 128 L2 decay: 0.000400 Token is 1,10,2,3,2,10,5,1,1,11,8,2,2,1,5,2,9,3,0,9,2,2,4,3,2,2,1,2,9,5 conv_1x1 -> shape (-1L, 64L, 32L, 32L) avgpool_2x2 -> shape (-1L, 64L, 32L, 32L) ------------ conv_1x1 -> shape (-1L, 64L, 32L, 32L) dilated_2x2 -> shape (-1L, 64L, 32L, 32L) ------------ conv_1x1 -> shape (-1L, 64L, 32L, 32L) avgpool_2x2 -> shape (-1L, 64L, 32L, 32L) ------------ conv_1x1 -> shape (-1L, 64L, 32L, 32L) conv_2x2 -> shape (-1L, 64L, 32L, 32L) ------------ conv_1x1 -> shape (-1L, 64L, 32L, 32L) avgpool_3x3 -> shape (-1L, 64L, 32L, 32L) ============ conv_1x1 -> shape (-1L, 128L, 16L, 16L) conv_3x3 -> shape (-1L, 128L, 16L, 16L) ------------ conv_1x1 -> shape (-1L, 128L, 16L, 16L) conv_2x2 -> shape (-1L, 128L, 16L, 16L) ------------ conv_1x1 -> shape (-1L, 128L, 16L, 16L) conv_3x3 -> shape (-1L, 128L, 16L, 16L) ------------ conv_1x1 -> shape (-1L, 128L, 16L, 16L) dilated_2x2 -> shape (-1L, 128L, 16L, 16L) ------------ conv_1x1 -> shape (-1L, 128L, 16L, 16L) maxpool_3x3 -> shape (-1L, 128L, 16L, 16L) ============ conv_1x1 -> shape (-1L, 256L, 8L, 8L) conv_3x3 -> shape (-1L, 256L, 8L, 8L) ------------ conv_1x1 -> shape (-1L, 256L, 8L, 8L) dilated_2x2 -> shape (-1L, 256L, 8L, 8L) ------------ conv_1x1 -> shape (-1L, 256L, 8L, 8L) conv_3x3 -> shape (-1L, 256L, 8L, 8L) ------------ conv_1x1 -> shape (-1L, 256L, 8L, 8L) conv_3x3 -> shape (-1L, 256L, 8L, 8L) ------------ conv_1x1 -> shape (-1L, 256L, 8L, 8L) conv_1x3_3x1 -> shape (-1L, 256L, 8L, 8L) ============ W0722 15:16:21.008813 133 device_context.cc:259] Please NOTE: device: 0, CUDA Capability: 70, Driver API Version: 9.2, Runtime API Version: 9.0 W0722 15:16:21.012676 133 device_context.cc:267] device: 0, cuDNN Version: 7.3. Reading file cifar-10-batches-py/data_batch_1 Reading file cifar-10-batches-py/data_batch_2 Reading file cifar-10-batches-py/data_batch_3 Reading file cifar-10-batches-py/data_batch_4 Reading file cifar-10-batches-py/data_batch_5 Epoch 0, Step 0, Loss 2.322999, Acc 0.117188 Epoch 0, Step 20, Loss 2.117482, Acc 0.226562 Epoch 0, Step 40, Loss 1.840883, Acc 0.306250 Epoch 0, Step 60, Loss 1.738423, Acc 0.362109 Epoch 0, Step 80, Loss 1.645888, Acc 0.395312 Epoch 0, Step 100, Loss 1.585704, Acc 0.421094 Epoch 0, Step 120, Loss 1.575156, Acc 0.425781 Epoch 0, Step 140, Loss 1.480760, Acc 0.458203 Epoch 0, Step 160, Loss 1.440411, Acc 0.489453 Epoch 0, Step 180, Loss 1.412331, Acc 0.496875 Epoch 0, Step 200, Loss 1.388680, Acc 0.493750 Epoch 0, Step 220, Loss 1.342945, Acc 0.515625 Epoch 0, Step 240, Loss 1.303435, Acc 0.526172 Epoch 0, Step 260, Loss 1.274386, Acc 0.549609 Epoch 0, Step 280, Loss 1.257554, Acc 0.557031 Epoch 0, Step 300, Loss 1.232829, Acc 0.552734 Epoch 0, Step 320, Loss 1.183153, Acc 0.579297 Epoch 0, Step 340, Loss 1.189723, Acc 0.578125 Epoch 0, Step 360, Loss 1.183041, Acc 0.573438 Epoch 0, Step 380, Loss 1.137142, Acc 0.594922 ^C Traceback (most recent call last): File "train_hinas_res.py", line 44, in <module> app.run(main) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages/absl/app.py", line 300, in run _run_main(main, args) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages/absl/app.py", line 251, in _run_main sys.exit(main(argv)) File "train_hinas_res.py", line 40, in main model.run() File "/home/aistudio/nn_paddle.py", line 139, in run feed_order=['pixel', 'label']) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages/paddle/fluid/contrib/trainer.py", line 405, in train feed_order) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages/paddle/fluid/contrib/trainer.py", line 483, in _train_by_executor self._train_by_any_executor(event_handler, exe, num_epochs, reader) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages/paddle/fluid/contrib/trainer.py", line 520, in _train_by_any_executor event_handler(EndEpochEvent(epoch_id)) File "/home/aistudio/nn_paddle.py", line 120, in event_handler reader=test_reader, feed_order=['pixel', 'label']) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages/paddle/fluid/contrib/trainer.py", line 418, in test self.train_func_outputs) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages/paddle/fluid/contrib/trainer.py", line 532, in _test_by_executor for data in reader(): File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/site-packages/paddle/batch.py", line 35, in batch_reader for instance in r: File "/home/aistudio/reader.py", line 109, in reader each_item.name for each_item in f if sub_name in each_item.name File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/tarfile.py", line 2510, in next tarinfo = self.tarfile.next() File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/tarfile.py", line 2350, in next self.fileobj.seek(self.offset - 1) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/gzip.py", line 443, in seek self.read(1024) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/gzip.py", line 268, in read self._read(readsize) File "/opt/conda/envs/python27-paddle120-env/lib/python2.7/gzip.py", line 319, in _read uncompress = self.decompress.decompress(buf) KeyboardInterrupt
!python infer.py
(1, 3, 32, 32) ('label_index:', 1)
此外,train_hinas.py和train_hinas_res.py 都支持以下参数:
初始化部分:
- random_flip_left_right:图片随机水平翻转(Default:True)
- random_flip_up_down:图片随机垂直翻转(Default:False)
- cutout:图片随机遮挡(Default:True)
- standardize_image:对图片每个像素做 standardize(Default:True)
- pad_and_cut_image:图片随机padding,并裁剪回原大小(Default:True)
- shuffle_image:训练时对输入图片的顺序做shuffle(Default:True)
- lr_max:训练开始时的learning rate(Default:0.1)
- lr_min:训练结束时的learning rate(Default:0.0001)
- batch_size:训练的batch size(Default:128)
- num_epochs:训练总的epoch(Default:200)
- weight_decay:训练时L2 Regularization大小(Default:0.0004)
- momentum:momentum优化器中的momentum系数(Default:0.9)
- dropout_rate:dropout层的dropout_rate(Default:0.5)
- bn_decay:batch norm层的decay/momentum系数(即moving average decay)大小(Default:0.9)
点击链接,使用AI Studio一键上手实践项目吧:https://aistudio.baidu.com/aistudio/projectdetail/122279
下载安装命令
## 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
>> 访问 PaddlePaddle 官网,了解更多相关内容。