3 ms·
I have done this a few times now. Alone (e.g. https://github.com/paulmorio/geo2dr https://github.com/paulmorio/geo2dr) and in collaboration with others (e.g. ht
by paulmorio 4y ago
I have done this a few times now. Alone (e.g. https://github.com/paulmorio/geo2dr https://github.com/paulmorio/geo2dr) and in collaboration with others (e.g. https://github.com/benedekrozemberczki/pytorch_geometric_temporal https://github.com/benedekrozemberczki/pytorch_geometric_tem...) primarily as a way to learn about the methods I was interested in from a research perspective whilst improving my skills in software engineering. I am still learning.
Starting out I would recommend implementing fundamental building blocks within whatever 'subculture' of ML you are interested in whether that be DL, kernel methods, probabilistic models, etc.
Let's say you are interested in deep learning methods (as that's something I could at least speak more confidently about). In that case build yourself an MLP layer, then an RNN layer, then a GNN layer, then a CNN layer, and an attention layer along with some full models with those layers on some case studies exhibiting different data modalities (images, graphs, signals). This should give you a feel for the assumptions driving the inductive biases in each layer and what motivates their existence (vs. an MLP). It also gives you the all the building blocks you can then extend to build every other DL layer+model out there. Another reason is that these fundamental building blocks have been implemented many times so you have a reference to look to when you get stuck.
On that note: here are some fun GNN papers to implement in order of increasing difficulty (try building using vanilla PyTorch/Jax instead of PyG).
- SGC (from https://arxiv.org/abs/1902.07153 https://arxiv.org/abs/1902.07153)
- GCN (from https://arxiv.org/abs/1609.02907 https://arxiv.org/abs/1609.02907)
- GAT (from https://arxiv.org/abs/1710.10903 https://arxiv.org/abs/1710.10903)
After building the basic building blocks these should each take about 2-5 hours (reading paper + implementation). Probably quicker at the end with all this practice. Good luck and remember to have fun!
- Heidaradar 4y agoquick question: when you say write your own MLP, RNN etc, is that without using PyTorch, I'm assuming so? i.e., i'm guessing you want me to write my own NN library that handles all of this stuff, including backprop etc
- Heidaradar 4y agoanother question: Do you have a good resource for learning more about GNNs, I'm currently looking at the Stanford course, is that good enough? any other courses/books/ just something else that you think would be more useful?
- Heidaradar 4y agothanks!!