{"id":48592238,"url":"https://github.com/deepskies/deepwavnn","last_synced_at":"2026-04-08T20:03:41.428Z","repository":{"id":183964269,"uuid":"608822593","full_name":"deepskies/DeepWavNN","owner":"deepskies","description":null,"archived":false,"fork":false,"pushed_at":"2023-07-26T15:21:54.000Z","size":10372,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":11,"default_branch":"main","last_synced_at":"2026-02-22T02:27:47.545Z","etag":null,"topics":["architecture","deep-learning","wavelet"],"latest_commit_sha":null,"homepage":null,"language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deepskies.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-03-02T20:08:19.000Z","updated_at":"2024-12-05T09:42:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"db5ee54f-1883-47a0-a218-02ede7400a31","html_url":"https://github.com/deepskies/DeepWavNN","commit_stats":null,"previous_names":["deepskies/deepwavnn"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/deepskies/DeepWavNN","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepskies%2FDeepWavNN","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepskies%2FDeepWavNN/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepskies%2FDeepWavNN/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepskies%2FDeepWavNN/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deepskies","download_url":"https://codeload.github.com/deepskies/DeepWavNN/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deepskies%2FDeepWavNN/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31571601,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["architecture","deep-learning","wavelet"],"created_at":"2026-04-08T20:03:40.689Z","updated_at":"2026-04-08T20:03:41.416Z","avatar_url":"https://github.com/deepskies.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n[![PyPI version](https://img.shields.io/pypi/v/wavpool)](https://pypi.org/project/wavpool/)\n[![arXiv](https://img.shields.io/badge/arXiv-2306.08734-b31b1b.svg)](https://arxiv.org/abs/2306.08734)\n\n# WavPool\n\nA network block with built in spacial and scale decomposition.\n\n\n\u003e    Modern deep neural networks comprise many operational layers, such as dense or convolutional layers, which are often collected into blocks. In this work, we introduce a new, wavelet-transform-based network architecture that we call the multi-resolution perceptron: by adding a pooling layer, we create a new network block, the WavPool. The first step of the multi-resolution perceptron is transforming the data into its multi-resolution decomposition form by convolving the input data with filters of fixed coefficients but increasing size. Following image processing techniques, we are able to make scale and spatial information simultaneously accessible to the network without increasing the size of the data vector. WavPool outperforms a similar multilayer perceptron while using fewer parameters, and outperforms a comparable convolutional neural network by over 10% on accuracy on CIFAR-10.\n\n\nThis codebase contains the experimental work supporting the paper. It is to be used additional material for replication.\n\n## Installation\n\nOur project can be installed with pip [from pypi](https://pypi.org/project/wavpool/) using:\n\n```\npip install wavpool\n```\n\nThis project is build with python `poetry`. And is our perfered method to install from source.\n\nCommands are as follows:\n\n```\npip install poetry\npoetry shell\npoetry init\npoetry install\n```\n\nTo install all the dependencies required for this project.\n\n\nWe also supply distribution files (found in \\dist), or you may use the provided pyproject.toml to install with your method of choice.\n\n## Contents\n\n### Data Generators\nThe pytorch data generator objects for the experiments done in this paper.\nWrapped to work with the training framework, but functionally unmodified.\nWe include CIFAR-10 (`cifar_generator.py`), Fashion MNIST (`fashion_mnist_generator.py`), and MNIST (`mnist_generator.py`).\n\n### Training\nTraining loops used in the experiments.\n\n`finetune_networks.py` generates a set of parameters optimial for a network/task combination.\n\n`train_model.py` Executes the training loop for a network/task/parameter combination.\n\n### Models\n\n`wavpool.py` Our implimentation of the novel WavPool block\n\n`vanillaCNN.py` Standard two layer CNN containing 2D Convolutions, batch norms, and a dense output\n\n`vanillaMLP.py` Standard two hidden layer MLP\n\n`wavelet_layer.py` The `MicroWav` MLR analysis layer\n\n`wavMLP.py` Single `MicroWav` layer network with an additional dense layer and output. Not included in the paper.\n\n\n### Notebooks\n\nVisualizations of experiments with plotting code for plots included in the paper, and code to produce weights.\n\n### `run_experiments.py`\n\nTakes a configuration and trains an model.\nCurrent execution shows the optimization and subsquentical training and testing for a WavPool over CIFAR-10, Fashion MNIST and MNIST.\n\n### Acknowledgement\n\nWe acknowledge the Deep Skies Lab as a community of multi-domain experts and collaborators who've facilitated an environment of open discussion, idea-generation, and collaboration. This community was important for the development of this project.\nWe thank Aleksandra Ciprijanovic, Andrew Hearin, and Shubhendu Trivedi for comments on the manuscript.\nThis manuscript has been authored by Fermi Research Alliance, LLC under Contract No.~DE-AC02-07CH11359 with the U.S.~Department of Energy, Office of Science, Office of High Energy Physics.\n\n\n`FERMILAB-CONF-23-278-CSAID`\n\n### Citation\nIf you use our work or our code, we request you cite the arxiv paper! \n\n```\n@misc{mcdermott2023wavpool,\n      title={WavPool: A New Block for Deep Neural Networks}, \n      author={Samuel D. McDermott and M. Voetberg and Brian Nord},\n      year={2023},\n      eprint={2306.08734},\n      archivePrefix={arXiv},\n      primaryClass={cs.LG}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeepskies%2Fdeepwavnn","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeepskies%2Fdeepwavnn","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeepskies%2Fdeepwavnn/lists"}