From 0850008e9204cef5fcb1fe508d4c99576b37f995 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Seungwon=20Park=20=28=EB=B0=95=EC=8A=B9=EC=9B=90=29?= Date: Wed, 26 Jun 2019 10:42:35 +0900 Subject: [PATCH] fix output channels of each DAG, resolves #11 (#15) * change output channels at input node of DAG * update result of fix11 --- README.md | 18 +++++++----------- assets/fix11.png | Bin 0 -> 42893 bytes model/dag_layer.py | 4 ++-- 3 files changed, 9 insertions(+), 13 deletions(-) create mode 100644 assets/fix11.png diff --git a/README.md b/README.md index 977d10d..cfdc9b2 100644 --- a/README.md +++ b/README.md @@ -7,26 +7,22 @@ Unofficial PyTorch Implementation of: ![](./assets/teaser.png) -## Results (To be fixed) - -Caveat: These are the results evaluated before fixing issue on random-graph generation. (See [#8](https://github.com/seungwonpark/RandWireNN/issues/8)) This will be updated. +## Results Validation result on Imagenet(ILSVRC2012) dataset: -| Top 1 accuracy (%) | Paper | Here | -| -------------------------- | ----- | --------- | -| RandWire-WS(4, 0.75), C=78 | 74.7 | 63.0 | +| Top 1 accuracy (%) | Paper | Here | +| -------------------------- | ----- | ---- | +| RandWire-WS(4, 0.75), C=78 | 74.7 | 69.2 | +- (2019.06.26) 69.2%: 250 epoch with SGD optimizer, lr 0.1, momentum 0.9, weight decay 5e-5, cosine annealing lr schedule (no label smoothing applied, see loss curve below) - (2019.04.14) 62.6%: 396k steps with SGD optimizer, lr 0.1, momentum 0.9, weigth decay 5e-5, lr decay about 0.1 at 300k - (2019.04.12) 62.6%: 416k steps with Adabound optimizer, initial lr 0.001(decayed about 0.1 at 300k), final lr 0.1, no weight decay -- [JiaminRen's implementation](https://github.com/JiaminRen/RandWireNN) reached accuarcy which is almost close to paper, using identical training strategy with paper. +- (2019.04) [JiaminRen's implementation](https://github.com/JiaminRen/RandWireNN) reached accuarcy which is almost close to paper, using identical training strategy with paper. - (2019.04.10) 63.0%: 450k steps with Adam optimizer, initial lr 0.001, lr decay about 0.1 for every 150k step - (2019.04.07) 56.8%: Training took about 16 hours on AWS p3.2xlarge(NVIDIA V100). 120k steps were done in total, and Adam optimizer with `lr=0.001, batch_size=128` was used with no learning rate decay. - ![](./assets/train-overall.png) -- Orange: Adam -- Blue: AdaBound -- Red: SGD + ![](./assets/fix11.png) ## Dependencies diff --git a/assets/fix11.png b/assets/fix11.png new file mode 100644 index 0000000000000000000000000000000000000000..d30d5ed2dc030a50a75aa2d2af2453cfff0152b3 GIT binary patch literal 42893 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