pyg-team / pytorch_geometric

Graph Neural Network Library for PyTorch
https://pyg.org
MIT License
21.31k stars 3.65k forks source link

Visualization pipelines? #898

Open dvirginz opened 4 years ago

dvirginz commented 4 years ago

🚀 Feature

I think that now, with the power and appreciation this repo has gathered, it has almost become a "one-stop-shop" for GDL. Thus, I think that a good visualization tool that will blend networkX tools (As you already support conversions between the two) could be a good and relevant feature. As more and more new papers already use torch_geometric as their development framework, it will also generate a unified visualization Standart across papers (I hope:) )

The pipelines such module can offer are simple graph representations, node classification visualizations, multiple graphs view (e.g a batch, given the graphs classification labels), etc.

If you think relevant, I'll be happy to take part in such task:)

rusty1s commented 4 years ago

Thanks for the issue but this is a difficult question. On the one hand, I certainly like the idea of providing visualization tools, especially for explainability. Since we are working on Tensorboard support, we should be also working on visualizing input data directly in Tensorboard. On the other hand, I am not a big fan of just providing a wrapper to the networkx visualization library. We already provide conversions to networkx, so I see no direct benefit in also providing a wrapper for visualization. In addition, networkx visualization is certainly limited. If we continue this road, we build PyG into a library that does everything, but nothing very well. WDYT?

dvirginz commented 4 years ago

I agree with you completely, networkx wrapper may be the wrong direction to go. I'm probably biased, but I feel that visualization standards are more crucial than TF support but :) The problem with trying to build the visualization library itself is that is a whole new huge project by itself (e.g. gephi) while offering standardized API for visualization node classification/edge weights/ activation values per node are currently things everyone is writing by their on, with no good open library that use existing code(e.g networkx) to do so.