{"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/reduce-reuse-recycle-compositional-generation","title":"Reduce, Reuse, Recycle: Compositional Generation with Energy-Based Diffusion Models and MCMC","arxiv_id":"2302.11552","date":"2023-02-22","proceeding":null,"authors":["Yilun Du","Conor Durkan","Robin Strudel","Joshua B. Tenenbaum","Sander Dieleman","Rob Fergus","Jascha Sohl-Dickstein","Arnaud Doucet","Will Grathwohl"],"abstract":"Since their introduction, diffusion models have quickly become the prevailing approach to generative modeling in many domains. They can be interpreted as learning the gradients of a time-varying sequence of log-probability density functions. This interpretation has motivated classifier-based and classifier-free guidance as methods for post-hoc control of diffusion models. In this work, we build upon these ideas using the score-based interpretation of diffusion models, and explore alternative ways to condition, modify, and reuse diffusion models for tasks involving compositional generation and guidance. In particular, we investigate why certain types of composition fail using current techniques and present a number of solutions. We conclude that the sampler (not the model) is responsible for this failure and propose new samplers, inspired by MCMC, which enable successful compositional generation. Further, we propose an energy-based parameterization of diffusion models which enables the use of new compositional operators and more sophisticated, Metropolis-corrected samplers. Intriguingly we find these samplers lead to notable improvements in compositional generation across a wide set of problems such as classifier-guided ImageNet modeling and compositional text-to-image generation.","url_abs":"https://arxiv.org/abs/2302.11552v6","url_pdf":"https://arxiv.org/pdf/2302.11552v6.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":"reduce-reuse-recycle-compositional-generation","repo_url":"https://github.com/yilundu/reduce_reuse_recycle","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"reduce-reuse-recycle-compositional-generation","repo_url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":null},{"paper_slug":"reduce-reuse-recycle-compositional-generation","repo_url":"https://github.com/jackonelli/mcmc_corr_score_diffusion","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"jax","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"image-generation","task_name":"Image Generation"},{"task_slug":"text-to-image-generation-1","task_name":"Text to Image Generation"},{"task_slug":"text-to-image-generation","task_name":"Text-to-Image Generation"}],"methods":[{"method_slug":"diffusion","method_name":"Diffusion"},{"method_slug":"fail","method_name":"fail"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2302.11552","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2302.11552"}},"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":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jackonelli/mcmc_corr_score_diffusion","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yilundu/reduce_reuse_recycle","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion","reach":null}],"summary":{"ran":1,"ran_draft_wrong":3,"unverified":20},"by_repo_kind":{"official":{"samples":11,"ran":0,"repositories":1},"listed":{"samples":13,"ran":4,"repositories":2}},"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":0,"samples":[{"code_sha256_prefix":"d4078a78835278a9","entry":"AnnealedLAEnergySampler","repo":"FraunhoferChalmersCentre/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d4078a78835278a9"}},{"code_sha256_prefix":"a9b7c8e105920ea7","entry":"detach_tensor_tuple","repo":"FraunhoferChalmersCentre/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a9b7c8e105920ea7"}},{"code_sha256_prefix":"f7a0f2fa7e703b10","entry":"get_mean","repo":"FraunhoferChalmersCentre/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f7a0f2fa7e703b10"}},{"code_sha256_prefix":"4a84c669b1fa6720","entry":"transition_factor","repo":"FraunhoferChalmersCentre/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4a84c669b1fa6720"}},{"code_sha256_prefix":"a04752f942c7925d","entry":"MCMCMHCorrSampler","repo":"FraunhoferChalmersCentre/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a04752f942c7925d"}},{"code_sha256_prefix":"8f1eb6e3a186e10c","entry":"MCMCSampler","repo":"FraunhoferChalmersCentre/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"8f1eb6e3a186e10c"}},{"code_sha256_prefix":"1d0ffb9417faf1c2","entry":"compute_alpha_bars","repo":"jackonelli/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/diffusion/base.py","file_url":"https://github.com/jackonelli/mcmc_corr_score_diffusion/blob/HEAD/src/diffusion/base.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"1d0ffb9417faf1c2"}},{"code_sha256_prefix":"a590204c5c54b2b7","entry":"convert_images","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"inf_sample.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/inf_sample.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a590204c5c54b2b7"}},{"code_sha256_prefix":"20943558683faaad","entry":"extract","repo":"jackonelli/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/diffusion/base.py","file_url":"https://github.com/jackonelli/mcmc_corr_score_diffusion/blob/HEAD/src/diffusion/base.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"20943558683faaad"}},{"code_sha256_prefix":"29fdc3d62f50e44c","entry":"get_caption_simple","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"inf_sample.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/inf_sample.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"29fdc3d62f50e44c"}},{"code_sha256_prefix":"d3feaecffda22481","entry":"get_shared_stems","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"ebm_finetune/loader.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/ebm_finetune/loader.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d3feaecffda22481"}},{"code_sha256_prefix":"e85431655316894a","entry":"improved_beta_schedule","repo":"jackonelli/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/diffusion/beta_schedules.py","file_url":"https://github.com/jackonelli/mcmc_corr_score_diffusion/blob/HEAD/src/diffusion/beta_schedules.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e85431655316894a"}},{"code_sha256_prefix":"e27f4a5a9b47901e","entry":"langevin_step","repo":"FraunhoferChalmersCentre/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/FraunhoferChalmersCentre/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e27f4a5a9b47901e"}},{"code_sha256_prefix":"44a6120940d4d226","entry":"langevin_step","repo":"jackonelli/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/jackonelli/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"44a6120940d4d226"}},{"code_sha256_prefix":"7cf0cc36ff64fa5f","entry":"langevin_step_grad","repo":"jackonelli/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/samplers/mcmc.py","file_url":"https://github.com/jackonelli/mcmc_corr_score_diffusion/blob/HEAD/src/samplers/mcmc.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7cf0cc36ff64fa5f"}},{"code_sha256_prefix":"06e0889f95445a4d","entry":"leapfrog_step","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"anneal_samplers.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/anneal_samplers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"06e0889f95445a4d"}},{"code_sha256_prefix":"932dcf598e0e8040","entry":"leapfrog_step_c","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"anneal_samplers.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/anneal_samplers.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"932dcf598e0e8040"}},{"code_sha256_prefix":"2d285d148cec3cf9","entry":"linear_beta_schedule","repo":"jackonelli/mcmc_corr_score_diffusion","repo_kind":"listed","path":"src/diffusion/beta_schedules.py","file_url":"https://github.com/jackonelli/mcmc_corr_score_diffusion/blob/HEAD/src/diffusion/beta_schedules.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2d285d148cec3cf9"}},{"code_sha256_prefix":"fd954310721946be","entry":"pil_image_to_norm_tensor","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"ebm_finetune/train_util.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/ebm_finetune/train_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fd954310721946be"}},{"code_sha256_prefix":"f21742fc20d71d4e","entry":"pil_image_to_norm_tensor","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"inf_sample.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/inf_sample.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f21742fc20d71d4e"}},{"code_sha256_prefix":"11a2ed9b4eca61ff","entry":"pred_to_pil","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"ebm_finetune/train_util.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/ebm_finetune/train_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"11a2ed9b4eca61ff"}},{"code_sha256_prefix":"0a9706f9bbe05cab","entry":"random_resized_crop","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"ebm_finetune/loader.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/ebm_finetune/loader.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0a9706f9bbe05cab"}},{"code_sha256_prefix":"57fcd456d5810d3b","entry":"read_image","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"ebm_finetune/utils.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/ebm_finetune/utils.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"57fcd456d5810d3b"}},{"code_sha256_prefix":"b07fd9a729a94156","entry":"resize_for_upsample","repo":"yilundu/reduce_reuse_recycle","repo_kind":"official","path":"ebm_finetune/train_util.py","file_url":"https://github.com/yilundu/reduce_reuse_recycle/blob/HEAD/ebm_finetune/train_util.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"b07fd9a729a94156"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}