Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ENAS, NB301 dataset preprocessing code for TA-GATES #72

Open
y0ngjaenious opened this issue Aug 16, 2023 · 6 comments
Open

ENAS, NB301 dataset preprocessing code for TA-GATES #72

y0ngjaenious opened this issue Aug 16, 2023 · 6 comments

Comments

@y0ngjaenious
Copy link

Dear TA-GATES authors,

I'm trying to figure out how your pre-processed pickle file of ENAS, NB301 dataset for TA-GATES is formed. Can you provide pre-processing codes for theses datasets?

Cheers.

@walkerning
Copy link
Owner

@zhouzx17 Please help @y0ngjaenious find our processing scripts.

@y0ngjaenious
Copy link
Author

And one more thing! How did you feed ENAS and NB301 data to GCN?
Did you do the line-graph conversion trick on those datasets? And did you use shared GCN on each cell in a cell group(and concat the final embedding?)?

Thank you for reading this issue.
I am very appreciated of your good research.

@walkerning
Copy link
Owner

walkerning commented Aug 17, 2023

Many thanks for your interest!

And one more thing! How did you feed ENAS and NB301 data to GCN? Did you do the line-graph conversion trick on those datasets?

No, we didn't do the line-graph conversion trick. We build TA-GATES based on our previous study GATES. I personally recommend reading GATES, it gives a very simple-to-understand description of predictor-based NAS as well as the idea of designing proper encoding for data-processing NN architectures. GATES designs corresponding GCNs for "op-on-the-edge" graphs (such as graphs in ENAS, NB301) as well as "op-on-the-node" graphs (such as graphs in NB101). Different code is used to implement the GCN for these two types of spaces. For example, this is the TA-GATES code for architectures in NB301, and this is the TA-GATES code for architectures in NB101. Despite the separate implementation, the underlying "idea" of encoding an architecture is the same, that is, to mimic the information processing (an operation --- no matter whether it is on an edge or on a node --- is modeled as a "transformation" of the propagating information) in GATES, and to also mimic the back-propagating information processing in TA-GATES.

We compare with the "line-graph conversion + GCN" solution on NB201 in both our GATES and TA-GATES papers. You can refer to the GATES paper (search for "line graph" keyword in the paper) for the discussion.

And did you use shared GCN on each cell in a cell group(and concat the final embedding)?

Yes, we use a shared GCN for different cell types (i.e., the normal cell and the reduce cell), and then concatenate the final embedding. The concatenation is implemented by a simple reshape here.

If you have any further questions, please do not hesitate to ask.

@zhouzx17
Copy link
Contributor

Dear TA-GATES authors,

I'm trying to figure out how your pre-processed pickle file of ENAS, NB301 dataset for TA-GATES is formed. Can you provide pre-processing codes for theses datasets?

Cheers.

Hi, y0ngjaenious, you can find our preprocess scripts in here.

Specifically, these two scripts can help to convert the original format of architectures' to the adjacency matrix in ENAS and NB301 search spaces.

Let us know if you have other questions.

@y0ngjaenious
Copy link
Author

@walkerning Oh, what I mean by "GCN" is your baseline method GCN[10]! How can you feed architectures into it?

@zhouzx17 Thank you for your reply! That will be very helpful for me!

BTW, I really appreciate your fast reply!! :)

@walkerning
Copy link
Owner

walkerning commented Aug 21, 2023

Oh, what I mean by "GCN" is your baseline method GCN[10]! How can you feed architectures into it?

For the "GCN" encoder on NB301 and ENAS, we implement it following the cited NeurIPS'19 work, here is the implementation https://github.com/walkerning/aw_nas/blob/master/aw_nas/evaluator/arch_network.py#L128

This encoder cannot get the same representation for isomorphic graphs, we have discussed two of its simple failure cases in the GATES's appendix Fig.1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants