D-X-Y / AutoDL-Projects

Automated deep learning algorithms implemented in PyTorch.
MIT License
1.57k stars 282 forks source link

The number of layer in the DARTS/GDAS #60

Closed Debrove closed 4 years ago

Debrove commented 4 years ago

Hi, Dong

In the search_model_darts_nasnet.py#L26, I am confused about the (N-1), because I think it should be N and the total number of layers is 8 instead of 6.(N=2).

So does in GDAS

Thank you.

D-X-Y commented 4 years ago

I use (N-1) as one layer has the stride=2. There are N+1+(N-1)+1+(N-1) cells.

Debrove commented 4 years ago

So is it different from the paper where the stride=1 in normal cell and stride=2 in reduction cell? And in the paper, there are N+1+N+1+N cells.

Also, in the code lib/models/cell_searchs/search_cells.py#L159, there are stride=1 in normal cell and and stride=2 in reduction cell.

Do I misunderstand? Please point out. Thank you very much.

D-X-Y commented 4 years ago

It is the same in the paper. In the paper, I mention N cells in each stage following other papers's habit. In other papers, when they say N cells in a stage, the first cell may have be stride=2 or stride=1. Please the original DARTS implementation https://github.com/quark0/darts/blob/master/cnn/model_search.py.

Debrove commented 4 years ago

Take CIFAR 10 as an example. In this for loop, if layers=8(default in papers), the architecture should be [normal,normal,reduce,normal,normal,reduce,normal,normal] while implemented as

There are N+1+(N-1)+1+(N-1) cells.

it should be [normal,normal,reduce,normal,reduce,normal]. I think it is different.

I use (N-1) as one layer has the stride=2.

I don't understand why (N-1) related to stride=2. As https://github.com/quark0/darts/blob/master/cnn/model_search.py#L43 shown, stride=2 is only in the reduction cell. But (N-1) is the number of stacked normal cells.

D-X-Y commented 4 years ago

I see, you are right. For layers=8, it is slightly different. layers=9 will result in the same model as (N=3) in this paper. Besides, in my implementation, the number of cells must be 3N, where the (N+1)-th and (2N+1)-th cells are reduction, which is indeed slightly different from darts's original implementation.

Debrove commented 4 years ago

OK! I get it! Thank you very much!

D-X-Y commented 4 years ago

@Debrove You are always welcome. and thanks for pointing out the issues in this repo