Our graph neural network models rely on complex encoder architectures where neural message passing is used to update a rich set of features in a graph prior to a global graph pooling operation to embed the graph into a meaningful, learned vector representation (Figure ). Under the message passing paradigm, these updates are computed as a function of differentiable update and aggregate functions on neighbor features. These functions can take an arbitrary number of forms and herein lies much of the rich diversity of graph neural networks developed. Typically, these functions are applied in various successive rounds to propagate information further across the initial graph. A pitfall lies with the potential pitfall of over smoothing where features become uniform across the graph. This updated graph is then embedded into vectors using a number of different methods to make it amenable to traditional neural networks for supervised learning tasks. These embedding schemes have also been an active area of research with schemes such as set2set , setTransformers , and self-attention graph (SAG) pooling created to balance computational complexity with expressiveness.