{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/learnable-wavelet-neural-networks-for","title":"Learnable wavelet neural networks for cosmological inference","arxiv_id":"2307.14362","date":"2023-07-24","proceeding":null,"authors":["Christian Pedersen","Michael Eickenberg","Shirley Ho"],"abstract":"Convolutional neural networks (CNNs) have been shown to both extract more information than the traditional two-point statistics from cosmological fields, and marginalise over astrophysical effects extremely well. However, CNNs require large amounts of training data, which is potentially problematic in the domain of expensive cosmological simulations, and it is difficult to interpret the network. In this work we apply the learnable scattering transform, a kind of convolutional neural network that uses trainable wavelets as filters, to the problem of cosmological inference and marginalisation over astrophysical effects. We present two models based on the scattering transform, one constructed for performance, and one constructed for interpretability, and perform a comparison with a CNN. We find that scattering architectures are able to outperform a CNN, significantly in the case of small training data samples. Additionally we present a lightweight scattering network that is highly interpretable.","url_abs":"https://arxiv.org/abs/2307.14362v1","url_pdf":"https://arxiv.org/pdf/2307.14362v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"learnable-wavelet-neural-networks-for","repo_url":"https://github.com/chris-pedersen/learnablewavelets","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2307.14362","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2307.14362"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"deterministic:regex_extraction","url":"https://github.com/Chris-Pedersen/LearnableWavelets","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/chris-pedersen/learnablewavelets","reach":{"status":"ok"}}],"summary":{"ran":12,"ran_draft_wrong":3,"unverified":9},"by_repo_kind":{"official":{"samples":24,"ran":15,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":24,"samples":[{"code_sha256_prefix":"486f406f2f3bd68a","entry":"best_model_params","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/datasets/utils.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/datasets/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"486f406f2f3bd68a"}},{"code_sha256_prefix":"0a2fcf23d88bd2bd","entry":"best_params_database","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/datasets/utils.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/datasets/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0a2fcf23d88bd2bd"}},{"code_sha256_prefix":"7282848554b225d2","entry":"cdgmm","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/scattering/torch_backend.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/scattering/torch_backend.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7282848554b225d2"}},{"code_sha256_prefix":"9503a72cd2a933bd","entry":"compute_padding","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/scattering/torch_backend.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/scattering/torch_backend.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"9503a72cd2a933bd"}},{"code_sha256_prefix":"fac5364e2f53c6db","entry":"conv3x3","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/models/sn_top_models.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/models/sn_top_models.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fac5364e2f53c6db"}},{"code_sha256_prefix":"1ebaa63977dc2fe3","entry":"create_dataset","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/datasets/camels_dataset.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/datasets/camels_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1ebaa63977dc2fe3"}},{"code_sha256_prefix":"0c1600e39e1f066f","entry":"create_filters_params","repo":"chris-pedersen/learnablewavelets","repo_kind":"official","path":"learnable_wavelets/scattering/create_filters.py","file_url":"https://github.com/chris-pedersen/learnablewavelets/blob/HEAD/learnable_wavelets/scattering/create_filters.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0c1600e39e1f066f"}},{"code_sha256_prefix":"11371f1aa3ebc508","entry":"create_filters_params_random","repo":"chris-pedersen/learnablewavelets","repo_kind":"official","path":"learnable_wavelets/scattering/create_filters.py","file_url":"https://github.com/chris-pedersen/learnablewavelets/blob/HEAD/learnable_wavelets/scattering/create_filters.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"11371f1aa3ebc508"}},{"code_sha256_prefix":"b0ceec5cb048f659","entry":"dataloader_elements","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/datasets/utils.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/datasets/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b0ceec5cb048f659"}},{"code_sha256_prefix":"2aa5c88b7e562c54","entry":"getAllFilters","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/models/models_utils.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/models/models_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"2aa5c88b7e562c54"}},{"code_sha256_prefix":"42a012eb40f8d5a7","entry":"getOneFilter","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/models/models_utils.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/models/models_utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"42a012eb40f8d5a7"}},{"code_sha256_prefix":"04a2dded51824755","entry":"get_total_num_filters","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/scattering/create_filters.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/scattering/create_filters.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"04a2dded51824755"}},{"code_sha256_prefix":"d46f0d5bcdd32665","entry":"periodize_filter_fft","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/scattering/create_filters.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/scattering/create_filters.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d46f0d5bcdd32665"}},{"code_sha256_prefix":"62fd56ebddd2375d","entry":"remove_monopole","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/datasets/camels_dataset.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/datasets/camels_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"62fd56ebddd2375d"}},{"code_sha256_prefix":"6b0313e30699cb74","entry":"smooth_maps","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/datasets/camels_dataset.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/datasets/camels_dataset.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"6b0313e30699cb74"}},{"code_sha256_prefix":"8dfe195c3a3a75c6","entry":"convolve_fields","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/scattering/scattering2d.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/scattering/scattering2d.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8dfe195c3a3a75c6"}},{"code_sha256_prefix":"f58629be71bad148","entry":"create_scatteringExclusive","repo":"chris-pedersen/learnablewavelets","repo_kind":"official","path":"learnable_wavelets/scattering/create_filters.py","file_url":"https://github.com/chris-pedersen/learnablewavelets/blob/HEAD/learnable_wavelets/scattering/create_filters.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f58629be71bad148"}},{"code_sha256_prefix":"a45fe1318bd27a17","entry":"create_scatteringExclusive","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/scattering/create_filters.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/scattering/create_filters.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a45fe1318bd27a17"}},{"code_sha256_prefix":"3409b04374655b40","entry":"do_convolutions","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/scattering/scattering2d.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/scattering/scattering2d.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"3409b04374655b40"}},{"code_sha256_prefix":"fcf37707f0675e0a","entry":"fft2","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/scattering/torch_backend.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/scattering/torch_backend.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fcf37707f0675e0a"}},{"code_sha256_prefix":"e8cac05e8ac93dee","entry":"get_architecture","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/models/camels_models.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/models/camels_models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e8cac05e8ac93dee"}},{"code_sha256_prefix":"8ad052160e8d4a84","entry":"get_filters_visualization","repo":"Chris-Pedersen/LearnableWavelets","repo_kind":"official","path":"learnable_wavelets/models/models_utils.py","file_url":"https://github.com/Chris-Pedersen/LearnableWavelets/blob/HEAD/learnable_wavelets/models/models_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8ad052160e8d4a84"}},{"code_sha256_prefix":"a9e6c33f1325a999","entry":"morlets","repo":"chris-pedersen/learnablewavelets","repo_kind":"official","path":"learnable_wavelets/scattering/create_filters.py","file_url":"https://github.com/chris-pedersen/learnablewavelets/blob/HEAD/learnable_wavelets/scattering/create_filters.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a9e6c33f1325a999"}},{"code_sha256_prefix":"f36728d1ab80fe30","entry":"raw_morlets","repo":"chris-pedersen/learnablewavelets","repo_kind":"official","path":"learnable_wavelets/scattering/create_filters.py","file_url":"https://github.com/chris-pedersen/learnablewavelets/blob/HEAD/learnable_wavelets/scattering/create_filters.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f36728d1ab80fe30"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}