{"url":"/method/revnet","slug":"revnet","name":"RevNet","full_name":"RevNet","full_name_withheld":false,"description_markdown":"A **Reversible Residual Network**, or **RevNet**, is a variant of a [ResNet](https://paperswithcode.com/method/resnet) where each layer’s activations can be reconstructed exactly from the next layer’s. Therefore, the activations for most layers need not be stored in memory during backpropagation. The result is a network architecture whose activation storage requirements are independent of depth, and typically at least an order of magnitude smaller compared with equally sized ResNets.\r\n\r\nRevNets are composed of a series of reversible blocks. Units in each layer are partitioned into two groups, denoted $x\\_{1}$ and $x\\_{2}$; the authors find what works best is partitioning the channels. Each reversible block takes inputs $\\left(x\\_{1}, x\\_{2}\\right)$ and produces outputs $\\left(y\\_{1}, y\\_{2}\\right)$ according to the following additive coupling rules – inspired the transformation in [NICE](https://paperswithcode.com/method/nice) (nonlinear independent components estimation) – and residual functions $F$ and $G$ analogous to those in standard ResNets:\r\n\r\n$$y\\_{1} = x\\_{1} + F\\left(x\\_{2}\\right)$$\r\n$$y\\_{2} = x\\_{2} + G\\left(y\\_{1}\\right)$$\r\n\r\nEach layer’s activations can be reconstructed from the next layer’s activations as follows:\r\n\r\n$$ x\\_{2} = y\\_{2} − G\\left(y\\_{1}\\right)$$\r\n$$ x\\_{1} = y\\_{1} − F\\left(x\\_{2}\\right)$$\r\n\r\nNote that unlike residual blocks, reversible blocks must have a stride of 1 because otherwise the layer\r\ndiscards information, and therefore cannot be reversible. Standard ResNet architectures typically\r\nhave a handful of layers with a larger stride. If we define a RevNet architecture analogously, the\r\nactivations must be stored explicitly for all non-reversible layers.","description_state":"present","introduced_year":null,"introduced_by":{"title":"The Reversible Residual Network: Backpropagation Without Storing Activations","paper":"/paper/the-reversible-residual-network","first_author":"Aidan N. Gomez","n_authors":4,"url_abs":null,"archive_paper_url":"https://paperswithcode.com/paper/the-reversible-residual-network"},"source":{"url":"http://arxiv.org/abs/1707.04585v1","title":"The Reversible Residual Network: Backpropagation Without Storing Activations","url_on_a_paper_host":true},"code_snippet_url":"https://github.com/osmr/imgclsmob/blob/68335927ba27f2356093b985bada0bc3989836b1/pytorch/pytorchcv/models/revnet.py#L319","code_snippet_url_on_a_code_host":true,"categories":[{"area":"Computer Vision","area_id":"computer-vision","collection":"Convolutional Neural Networks","url":"/methods/category/convolutional-neural-networks","pwc_aliases":[]}],"n_papers_tagged":9,"archive_num_papers":9,"papers_newest_first":[{"paper":"/paper/diffusion-models-beat-gans-on-image","title":"Diffusion Models Beat GANs on Image Classification","date":"2023-07-17","arxiv_id":"2307.08702","n_code_links":1,"syntology":null},{"paper":"/paper/conditional-injective-flows-for-bayesian","title":"Conditional Injective Flows for Bayesian Imaging","date":"2022-04-15","arxiv_id":"2204.07664","n_code_links":1,"syntology":null},{"paper":"/paper/level-set-learning-with-pseudo-reversible","title":"Level set learning with pseudo-reversible neural networks for nonlinear dimension reduction in function approximation","date":"2021-12-02","arxiv_id":"2112.01438","n_code_links":2,"syntology":null},{"paper":null,"title":"Multi-split Reversible Transformers Can Enhance Neural Machine Translation","date":"2021-04-01","arxiv_id":null,"n_code_links":0,"syntology":null},{"paper":"/paper/big-gans-are-watching-you-towards","title":"Object Segmentation Without Labels with Large-Scale Generative Models","date":"2020-06-08","arxiv_id":"2006.04988","n_code_links":1,"syntology":null},{"paper":null,"title":"Reconstructing Natural Scenes from fMRI Patterns using BigBiGAN","date":"2020-01-31","arxiv_id":"2001.11761","n_code_links":0,"syntology":null},{"paper":"/paper/large-scale-adversarial-representation","title":"Large Scale Adversarial Representation Learning","date":"2019-07-04","arxiv_id":"1907.02544","n_code_links":4,"syntology":{"ran":0,"of":3,"unverified":3,"pointer_only":0}},{"paper":null,"title":"Beyond Finite Layer Neural Networks: Bridging Deep Architectures and Numerical Differential Equations","date":"2017-10-27","arxiv_id":"1710.10121","n_code_links":0,"syntology":null},{"paper":"/paper/the-reversible-residual-network","title":"The Reversible Residual Network: Backpropagation Without Storing Activations","date":"2017-07-14","arxiv_id":"1707.04585","n_code_links":9,"syntology":{"ran":4,"of":4,"unverified":0,"pointer_only":0}}],"papers_shown":9,"tasks":[{"task":"/task/image-classification","name":"Image Classification","papers":3},{"task":"/task/image-classification","name":"image-classification","papers":3},{"task":"/task/image-generation","name":"Image Generation","papers":2},{"task":"/task/attribute","name":"Attribute","papers":1},{"task":"/task/classification-1","name":"Classification","papers":1},{"task":"/task/contrastive-learning","name":"Contrastive Learning","papers":1},{"task":"/task/denoising","name":"Denoising","papers":1},{"task":"/task/dimensionality-reduction","name":"Dimensionality Reduction","papers":1},{"task":"/task/fine-grained-image-classification","name":"Fine-Grained Image Classification","papers":1},{"task":"/task/classification","name":"General Classification","papers":1},{"task":null,"name":"Generative Adversarial Network","papers":1},{"task":"/task/image-reconstruction","name":"Image Reconstruction","papers":1},{"task":"/task/image-restoration","name":"Image Restoration","papers":1},{"task":"/task/machine-translation","name":"Machine Translation","papers":1},{"task":"/task/object","name":"Object","papers":1},{"task":"/task/representation-learning","name":"Representation Learning","papers":1},{"task":"/task/saliency-detection","name":"Saliency Detection","papers":1},{"task":"/task/segmentation","name":"Segmentation","papers":1},{"task":"/task/self-supervised-image-classification","name":"Self-Supervised Image Classification","papers":1},{"task":"/task/self-supervised-learning","name":"Self-Supervised Learning","papers":1}],"tasks_shown":20,"n_tasks":32,"usage_by_year":[{"year":"2017","papers":2},{"year":"2019","papers":1},{"year":"2020","papers":2},{"year":"2021","papers":2},{"year":"2022","papers":1},{"year":"2023","papers":1}],"row_source":"methods_table","archive":{"source":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","archive_url":"https://paperswithcode.com/method/revnet"},"syntology_read_at":"2026-09-24T18:15:14+00:00"}