# NLP Modeling Library This libary provides a set of Keras primitives (Layers, Networks, and Models) that can be assembled into transformer-based models. They are flexible, validated, interoperable, and both TF1 and TF2 compatible. * [`layers`](layers) are the fundamental building blocks for NLP models. They can be used to assemble new layers, networks, or models. * [`networks`](networks) are combinations of layers (and possibly other networks). They are sub-units of models that would not be trained alone. They encapsulate common network structures like a classification head or a transformer encoder into an easily handled object with a standardized configuration. * [`models`](models) are combinations of layers and networks that would be trained. Pre-built canned models are provided as both convenience functions and canonical examples. * [`losses`](losses) contains common loss computation used in NLP tasks. Besides the pre-defined primitives, it also provides scaffold classes to allow easy experimentation with noval achitectures, e.g., you don’t need to fork a whole Transformer object to try a different kind of attention primitive, for instance. * [`TransformerScaffold`](layers/transformer_scaffold.py) implements the Transformer from ["Attention Is All You Need"] (https://arxiv.org/abs/1706.03762), with a customizable attention layer option. Users can pass a class to `attention_cls` and associated config to `attention_cfg`, in which case the scaffold will instantiate the class with the config, or pass a class instance to `attention_cls`. * [`EncoderScaffold`](networks/encoder_scaffold.py) implements the transformer encoder from ["BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding"](https://arxiv.org/abs/1810.04805), with customizable embedding subnetwork (which will replace the standard embedding logic) and/or a custom hidden layer (which will replace the Transformer instantiation in the encoder). BERT and ALBERT models in this repo are implemented using this library. Code examples can be found in the corresponding model folder.