{ "info": { "author": "S.C. van de Leemput", "author_email": "silvandeleemput@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 3 - Alpha", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering", "Topic :: Scientific/Engineering :: Information Analysis", "Topic :: Scientific/Engineering :: Medical Science Apps.", "Topic :: Software Development :: Libraries" ], "description": "======\nMemCNN\n======\n\n.. image:: https://img.shields.io/circleci/build/github/silvandeleemput/memcnn/master.svg \n :alt: CircleCI - Status master branch\n :target: https://circleci.com/gh/silvandeleemput/memcnn/tree/master\n\n.. image:: https://img.shields.io/docker/cloud/build/silvandeleemput/memcnn.svg\n :alt: Docker - Status\n :target: https://hub.docker.com/r/silvandeleemput/memcnn\n\n.. image:: https://readthedocs.org/projects/memcnn/badge/?version=latest \n :alt: Documentation - Status master branch\n :target: https://memcnn.readthedocs.io/en/latest/?badge=latest\n\n.. image:: https://img.shields.io/codacy/grade/95de32e0d7c54d038611da47e9f0948b/master.svg\n :alt: Codacy - Branch grade\n :target: https://app.codacy.com/project/silvandeleemput/memcnn/dashboardgit\n\n.. image:: https://img.shields.io/codecov/c/gh/silvandeleemput/memcnn/master.svg \n :alt: Codecov - Status master branch\n :target: https://codecov.io/gh/silvandeleemput/memcnn\n\n.. image:: https://img.shields.io/pypi/v/memcnn.svg\n :alt: PyPI - Latest release\n :target: https://pypi.python.org/pypi/memcnn\n\n.. image:: https://img.shields.io/conda/vn/silvandeleemput/memcnn?label=anaconda\n :alt: Conda - Latest release\n :target: https://anaconda.org/silvandeleemput/memcnn\n\n.. image:: https://img.shields.io/pypi/implementation/memcnn.svg \n :alt: PyPI - Implementation\n :target: https://pypi.python.org/pypi/memcnn\n\n.. image:: https://img.shields.io/pypi/pyversions/memcnn.svg \n :alt: PyPI - Python version\n :target: https://pypi.python.org/pypi/memcnn\n\n.. image:: https://img.shields.io/github/license/silvandeleemput/memcnn.svg \n :alt: GitHub - Repository license\n :target: https://github.com/silvandeleemput/memcnn/blob/master/LICENSE.txt\n\nA `PyTorch `__ framework for developing memory-efficient invertible neural networks.\n\n* Free software: `MIT license `__ (please cite our work if you use it)\n* Documentation: https://memcnn.readthedocs.io.\n* Installation: https://memcnn.readthedocs.io/en/latest/installation.html\n\nFeatures\n--------\n\n* Simple `ReversibleBlock` wrapper class to wrap and convert arbitrary PyTorch Modules into invertible versions.\n* Simple switching between `additive` and `affine` invertible coupling schemes and different implementations.\n* Simple toggling of memory saving by setting the `keep_input` property of the `ReversibleBlock`.\n* Training and evaluation code for reproducing RevNet experiments using MemCNN.\n* CI tests for Python v2.7 and v3.6 and torch v0.4, v1.0, and v1.1 with good code coverage.\n\nExample usage: ReversibleBlock\n------------------------------\n\n.. code:: python\n\n import torch\n import torch.nn as nn\n import memcnn\n\n\n # define a new torch Module with a sequence of operations: Relu o BatchNorm2d o Conv2d\n class ExampleOperation(nn.Module):\n def __init__(self, channels):\n super(ExampleOperation, self).__init__()\n self.seq = nn.Sequential(\n nn.Conv2d(in_channels=channels, out_channels=channels,\n kernel_size=(3, 3), padding=1),\n nn.BatchNorm2d(num_features=channels),\n nn.ReLU(inplace=True)\n )\n\n def forward(self, x):\n return self.seq(x)\n\n # generate some random input data (batch_size, num_channels, y_elements, x_elements)\n X = torch.rand(2, 10, 8, 8)\n\n # application of the operation(s) the normal way\n model_normal = ExampleOperation(channels=10)\n Y = model_normal(X)\n\n # application of the operation(s) turned invertible using the reversible block\n F = ExampleOperation(channels=10 // 2)\n model_invertible = memcnn.ReversibleBlock(F, coupling='additive', keep_input=True, keep_input_inverse=True)\n Y2 = model_invertible(X)\n\n # The input (X) can be approximated (X2) by applying the inverse method of the reversible block on Y2\n X2 = model_invertible.inverse(Y2)\n\nRun PyTorch Experiments\n-----------------------\n\nAfter installing MemCNN run:\n\n.. code:: bash\n\n python -m memcnn.train [MODEL] [DATASET] [--fresh] [--no-cuda]\n\n* Available values for ``DATASET`` are ``cifar10`` and ``cifar100``.\n* Available values for ``MODEL`` are ``resnet32``, ``resnet110``, ``resnet164``, ``revnet38``, ``revnet110``, ``revnet164``\n* Use the ``--fresh`` flag to remove earlier experiment results.\n* Use the ``--no-cuda`` flag to train on the CPU rather than the GPU through CUDA.\n\nDatasets are automatically downloaded if they are not available.\n\nWhen using Python 3.* replace the ``python`` directive with the appropriate Python 3 directive. For example when using the MemCNN docker image use ``python3.6``.\n\nWhen MemCNN was installed using `pip` or from sources you might need to setup a configuration file before running this command.\nRead the corresponding section about how to do this here: https://memcnn.readthedocs.io/en/latest/installation.html\n\n\n\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://pypi.python.org/pypi/memcnn/", "keywords": "memcnn invertible PyTorch", "license": "LICENSE.txt", "maintainer": "", "maintainer_email": "", "name": "memcnn", "package_url": "https://pypi.org/project/memcnn/", "platform": "", "project_url": "https://pypi.org/project/memcnn/", "project_urls": { "Homepage": "http://pypi.python.org/pypi/memcnn/" }, "release_url": "https://pypi.org/project/memcnn/1.0.0/", "requires_dist": [ "Pillow", "numpy", "SimpleITK", "tensorboardX (==1.4)", "tensorflow (>=1.11.0)", "torch (>=0.4.0)", "torchvision", "tqdm" ], "requires_python": "", "summary": "A PyTorch framework for developing memory efficient deep invertible networks.", "version": "1.0.0" }, "last_serial": 5596407, "releases": { "0.2.1": [ { "comment_text": "", "digests": { "md5": "e997a23f42301f35a22e21b17265e6f2", "sha256": "bcd9524786089c6937f465c147da542e85411e814e4a98c0190dd0d8c17d6b5d" }, "downloads": -1, "filename": "memcnn-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e997a23f42301f35a22e21b17265e6f2", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 5712, "upload_time": "2019-06-06T08:50:37", "url": "https://files.pythonhosted.org/packages/6c/88/0db1f9c1fd0a7f21384c829d6fc99a1b0967b548ab994564b3e7f001f1ec/memcnn-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5a45b8e710c9e4e708622b69f3423d0c", "sha256": "61274cf6678b1dbb76b42c1158bfd0d9376e812fd7c6ef388d83fa27b5ce97b5" }, "downloads": -1, "filename": "memcnn-0.2.1.tar.gz", "has_sig": false, "md5_digest": "5a45b8e710c9e4e708622b69f3423d0c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11351, "upload_time": "2019-06-06T08:50:38", "url": "https://files.pythonhosted.org/packages/ab/bb/4e01f3a42632ec0c981c1ff5eeb78ff6884dfabd2d66ee773447be75e280/memcnn-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "b740f2f447a3d3a8eef96157f6869c6a", "sha256": "580db99b2940efd846ba9fdf50d5bee93c54036f553d371e28c06da89484f06b" }, "downloads": -1, "filename": "memcnn-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b740f2f447a3d3a8eef96157f6869c6a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 40591, "upload_time": "2019-07-09T12:45:56", "url": "https://files.pythonhosted.org/packages/b4/e2/8d1bb9714bb620ea991a7fa773b039e80a1deeed616a1077228f9b4ca5ef/memcnn-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "df6d47d3df9653e564a83ad5d03afdc5", "sha256": "0d93fd55223e964c7f874a03d8c89a3f287dbd68301f6a6bee95ae3f8b71f55c" }, "downloads": -1, "filename": "memcnn-0.3.0.tar.gz", "has_sig": false, "md5_digest": "df6d47d3df9653e564a83ad5d03afdc5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 37284, "upload_time": "2019-07-09T12:45:58", "url": "https://files.pythonhosted.org/packages/4c/b5/8eedbf416ec9133d08d52ae62d2aa35c88fac713fa8d549450f8261d9ec2/memcnn-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "0b2ae637e66ea48265c6717499cdedc6", "sha256": "e72499aa635df91b827ef951586c64aef0f736db3e9872707a37daf582f82e71" }, "downloads": -1, "filename": "memcnn-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0b2ae637e66ea48265c6717499cdedc6", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41759, "upload_time": "2019-07-09T20:31:48", "url": "https://files.pythonhosted.org/packages/f9/19/ee9a508c4262ba2664f86c0aaf9472b0a341c89324791c4423d3e0aba0cf/memcnn-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "27ec3665ef9d8a59232ed25e1b6b617f", "sha256": "52275ad4ffb739db3f158e1c64623d7b126444f69805ce0218caebb2545d4ef4" }, "downloads": -1, "filename": "memcnn-0.3.1.tar.gz", "has_sig": false, "md5_digest": "27ec3665ef9d8a59232ed25e1b6b617f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 38823, "upload_time": "2019-07-09T20:31:49", "url": "https://files.pythonhosted.org/packages/9d/b9/1d110fec039fe199dd57da33f4d370b844c61b5d14a3c0975d59845b650d/memcnn-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "1d07a74b2769d7f660da9ac806445768", "sha256": "75d761177f5b1eb5652ed1e8b2899369889a0ea403fd75eeca405d5c9d26af9d" }, "downloads": -1, "filename": "memcnn-0.3.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1d07a74b2769d7f660da9ac806445768", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42082, "upload_time": "2019-07-10T16:05:37", "url": "https://files.pythonhosted.org/packages/af/b8/9b60a9b4e0068b1a93d8955d892fe8c412eb9b92905dee44523263c39e96/memcnn-0.3.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5c9f628963cf527ccdc24fa4c558d6c8", "sha256": "35a4d3f3981d7cf1b2d4421335813222a61c1f28196d99a3882b58d489a2c267" }, "downloads": -1, "filename": "memcnn-0.3.2.tar.gz", "has_sig": false, "md5_digest": "5c9f628963cf527ccdc24fa4c558d6c8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39743, "upload_time": "2019-07-10T16:05:39", "url": "https://files.pythonhosted.org/packages/ab/29/dc1c0c534554bd22cbf1649df3be3ce7a8ae407e5600c77a21ea48783c17/memcnn-0.3.2.tar.gz" } ], "0.3.3": [ { "comment_text": "", "digests": { "md5": "d766ac91f7f1eea59ad20a13dfe9b312", "sha256": "f542c48e7f9054982d28b404878198003d85a98b1437a96b176ec7ba65fbde47" }, "downloads": -1, "filename": "memcnn-0.3.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d766ac91f7f1eea59ad20a13dfe9b312", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42080, "upload_time": "2019-07-10T22:12:37", "url": "https://files.pythonhosted.org/packages/95/17/f5ce7d0f827604c20810411408a39018a29c58c82211371997f5b1d170b4/memcnn-0.3.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2e356da28664d2f9604f54aaa7a4c64b", "sha256": "b362aa86e690077e3ae12f9898f1f6f4d26f377a4aef3c54cf690f0ff7f57443" }, "downloads": -1, "filename": "memcnn-0.3.3.tar.gz", "has_sig": false, "md5_digest": "2e356da28664d2f9604f54aaa7a4c64b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 39897, "upload_time": "2019-07-10T22:12:39", "url": "https://files.pythonhosted.org/packages/cf/df/e560aa511dc799b503d813d8f0e4670990efe12afe602fa30ed4bafe2a32/memcnn-0.3.3.tar.gz" } ], "0.3.4": [ { "comment_text": "", "digests": { "md5": "252c5026798e2d3592863028adce69bd", "sha256": "0a6cd834f970412936fd315e970d9ea791ecd411242d4a31b9f5b13c5e3caede" }, "downloads": -1, "filename": "memcnn-0.3.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "252c5026798e2d3592863028adce69bd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42748, "upload_time": "2019-07-26T11:29:45", "url": "https://files.pythonhosted.org/packages/73/49/fbb7ddeb92d01276f0d0c324be67b560038971a47db352f70b94095ffb2b/memcnn-0.3.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "33e60893e7ae5f54c7d7559deb33f9dc", "sha256": "510ef21d3b5ca336238ad79605bfe22a3ec63074a290e80f398b8d8e7765dd32" }, "downloads": -1, "filename": "memcnn-0.3.4.tar.gz", "has_sig": false, "md5_digest": "33e60893e7ae5f54c7d7559deb33f9dc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40501, "upload_time": "2019-07-26T11:29:47", "url": "https://files.pythonhosted.org/packages/6c/78/914ad865a71d5383d165012149851f7f31dfcecbe19633ee0954bafc8c2e/memcnn-0.3.4.tar.gz" } ], "0.3.5": [ { "comment_text": "", "digests": { "md5": "1ca33779e78f6572ebe149751273aba9", "sha256": "12753ac81acabb77a0b5b0758a4e139864baa2d208404d794e5c3aabb75a9f39" }, "downloads": -1, "filename": "memcnn-0.3.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1ca33779e78f6572ebe149751273aba9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42784, "upload_time": "2019-07-28T13:37:32", "url": "https://files.pythonhosted.org/packages/3e/b0/3fad227e3bb438e370bd6004f8551dd2ce2cb65d48ec4bb311195f48040d/memcnn-0.3.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b3b148954893a6f29efbe949889976d8", "sha256": "6f8d5763bae7002d5bb121fac8baf2fc23a2572cf4890e34327e9421e0519df2" }, "downloads": -1, "filename": "memcnn-0.3.5.tar.gz", "has_sig": false, "md5_digest": "b3b148954893a6f29efbe949889976d8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42333, "upload_time": "2019-07-28T13:37:34", "url": "https://files.pythonhosted.org/packages/11/b4/49d9191b0aab618551728901f0af50babfb80e450cd3cc5b6a9642c03c68/memcnn-0.3.5.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "4b5122d391c71ea2f977fde2f295a9c7", "sha256": "23d16f077964a59ac9198917a3a7975eadc5f256638fa1075680aa8c1ae8008d" }, "downloads": -1, "filename": "memcnn-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4b5122d391c71ea2f977fde2f295a9c7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42784, "upload_time": "2019-07-28T18:52:33", "url": "https://files.pythonhosted.org/packages/60/e9/6111141773bce355061744c0f7b40528a7778ec0e9f395285390b6cb132b/memcnn-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23ae96bc73478b3ee9aa03b82bc3cd06", "sha256": "1c2f45b531307b6142339568e8a493f0e309ff76eb6136cd9b6987c47fa9b887" }, "downloads": -1, "filename": "memcnn-1.0.0.tar.gz", "has_sig": false, "md5_digest": "23ae96bc73478b3ee9aa03b82bc3cd06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40804, "upload_time": "2019-07-28T18:52:34", "url": "https://files.pythonhosted.org/packages/1a/30/975e162ffba896b8de8c37d20232a0c6cc0fdd82db42f3a7575f7e50f352/memcnn-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4b5122d391c71ea2f977fde2f295a9c7", "sha256": "23d16f077964a59ac9198917a3a7975eadc5f256638fa1075680aa8c1ae8008d" }, "downloads": -1, "filename": "memcnn-1.0.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4b5122d391c71ea2f977fde2f295a9c7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 42784, "upload_time": "2019-07-28T18:52:33", "url": "https://files.pythonhosted.org/packages/60/e9/6111141773bce355061744c0f7b40528a7778ec0e9f395285390b6cb132b/memcnn-1.0.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23ae96bc73478b3ee9aa03b82bc3cd06", "sha256": "1c2f45b531307b6142339568e8a493f0e309ff76eb6136cd9b6987c47fa9b887" }, "downloads": -1, "filename": "memcnn-1.0.0.tar.gz", "has_sig": false, "md5_digest": "23ae96bc73478b3ee9aa03b82bc3cd06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 40804, "upload_time": "2019-07-28T18:52:34", "url": "https://files.pythonhosted.org/packages/1a/30/975e162ffba896b8de8c37d20232a0c6cc0fdd82db42f3a7575f7e50f352/memcnn-1.0.0.tar.gz" } ] }