--- language: - en thumbnail: tags: - keras - tensorflow - image-classification library_name: generic libraries: TensorBoard license: apache-2.0 metrics: - accuracy model-index: - name: Image-Classification-using-EANet results: - task: type: Image-Classification-using-EANet dataset: type: Image name: CIFAR100 metrics: - type: accuracy value: [] - type: validation loss value: [] --- ## Image-Classification-using-EANet with Keras This repo contains the model and the notebook on [Image Classification using EANet with Keras](https://keras.io/examples/vision/eanet/). Credits: [ZhiYong Chang](https://github.com/czy00000) - Original Author HF Contribution: [Drishti Sharma](https://huggingface.co/spaces/DrishtiSharma) ### Introduction This example implements the EANet model for image classification, and demonstrates it on the [CIFAR-100](https://huggingface.co/datasets/cifar100) dataset. EANet introduces a novel attention mechanism named external attention, based on two external, small, learnable, and shared memories, which can be implemented easily by simply using two cascaded linear layers and two normalization layers. It conveniently replaces self-attention as used in existing architectures. External attention has linear complexity, as it only implicitly considers the correlations between all samples. ### Implemention of the EANet model The EANet model leverages external attention. The computational complexity of traditional self attention is O(d * N ** 2), where d is the embedding size, and N is the number of patch. The authors find that most pixels are closely related to just a few other pixels, and an N-to-N attention matrix may be redundant. So, they propose as an alternative an external attention module where the computational complexity of external attention is O(d * S * N). As d and S are hyper-parameters, the proposed algorithm is linear in the number of pixels. In fact, this is equivalent to a drop patch operation, because a lot of information contained in a patch in an image is redundant and unimportant.