renqianluo / NAO_pytorch

Pytorch Implementation of Neural Architecture Optimization
GNU General Public License v3.0
111 stars 32 forks source link

代码没看懂可以寻求帮助吗╥﹏╥ #2

Open zihaozhang9 opened 5 years ago

zihaozhang9 commented 5 years ago

您好!我想学习一下您的工作,但是我没有看懂您的代码。 train_search.py里面定义了一个model网络结构。这是要搜索的网络结构吗? 在427行定义了一个nao这里面是包含了编码器和解码器吗。这个用来求解出最好的结构? 我没有明白,nao会通过一个num_new_archs变量改变model,但是model怎么影响nao呢?nao怎么知道model这个模型设计的好不好

renqianluo commented 5 years ago

@zihaozhang9 train_search.py里的model就是要搜索的网络 nao包含的就是encoder-predictor-decoder结构 model的valid accuracy作为评价该model的指标,encoder-predictor要学的就是从model到它的valid accuracy这的这种映射关系。

zihaozhang9 commented 5 years ago

@zihaozhang9 train_search.py里的model就是要搜索的网络 nao包含的就是encoder-predictor-decoder结构 model的valid accuracy作为评价该model的指标,encoder-predictor要学的就是从model到它的valid accuracy这的这种映射关系。

非常感谢

zihaozhang9 commented 5 years ago

@zihaozhang9 train_search.py里的model就是要搜索的网络 nao包含的就是encoder-predictor-decoder结构 model的valid accuracy作为评价该model的指标,encoder-predictor要学的就是从model到它的valid accuracy这的这种映射关系。

我貌似看懂了一些。

  1. 先训练model,在499行nao_train_dataset变量收集训练的acc,做为nao的训练数据。
  2. nao将学到的结构在549行child_arch_pool 变量反馈给model,改变网络结构。
  3. model的最初始结构在450行utils.generate_arch随机定义了一个结构。
  4. 然后训练时model的forward中动态改变网络结构,在model_search.py文件中NASNetworkCIFAR的forward由arch控制#L220