{"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/eigengan-layer-wise-eigen-learning-for-gans","title":"EigenGAN: Layer-Wise Eigen-Learning for GANs","arxiv_id":"2104.12476","date":"2021-04-26","proceeding":"ICCV 2021 10","authors":["Zhenliang He","Meina Kan","Shiguang Shan"],"abstract":"Recent studies on Generative Adversarial Network (GAN) reveal that different layers of a generative CNN hold different semantics of the synthesized images. However, few GAN models have explicit dimensions to control the semantic attributes represented in a specific layer. This paper proposes EigenGAN which is able to unsupervisedly mine interpretable and controllable dimensions from different generator layers. Specifically, EigenGAN embeds one linear subspace with orthogonal basis into each generator layer. Via generative adversarial training to learn a target distribution, these layer-wise subspaces automatically discover a set of \"eigen-dimensions\" at each layer corresponding to a set of semantic attributes or interpretable variations. By traversing the coefficient of a specific eigen-dimension, the generator can produce samples with continuous changes corresponding to a specific semantic attribute. Taking the human face for example, EigenGAN can discover controllable dimensions for high-level concepts such as pose and gender in the subspace of deep layers, as well as low-level concepts such as hue and color in the subspace of shallow layers. Moreover, in the linear case, we theoretically prove that our algorithm derives the principal components as PCA does. Codes can be found in https://github.com/LynnHo/EigenGAN-Tensorflow.","url_abs":"https://arxiv.org/abs/2104.12476v2","url_pdf":"https://arxiv.org/pdf/2104.12476v2.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":"eigengan-layer-wise-eigen-learning-for-gans","repo_url":"https://github.com/LynnHo/EigenGAN-Tensorflow","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"attribute","task_name":"Attribute"},{"task_slug":"face-generation","task_name":"Face Generation"},{"task_slug":null,"task_name":"Generative Adversarial Network"},{"task_slug":"image-generation","task_name":"Image Generation"}],"methods":[{"method_slug":"pca","method_name":"PCA"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2104.12476","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2104.12476"}},"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/LynnHo/EigenGAN-Tensorflow","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":16},"by_repo_kind":{"official":{"samples":16,"ran":0,"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":0,"samples":[{"code_sha256_prefix":"6151aeafdf1f5100","entry":"directory","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"pylib/path.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/pylib/path.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":"6151aeafdf1f5100"}},{"code_sha256_prefix":"cc45f9ab2e1c2c76","entry":"float2im","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"imlib/dtype.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/imlib/dtype.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":"cc45f9ab2e1c2c76"}},{"code_sha256_prefix":"e67b1d6de08e88b9","entry":"grid_split","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"imlib/transform.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/imlib/transform.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":"e67b1d6de08e88b9"}},{"code_sha256_prefix":"c4aaff60bf06e015","entry":"imcrop","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"imlib/transform.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/imlib/transform.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":"c4aaff60bf06e015"}},{"code_sha256_prefix":"e162886a782f2923","entry":"immerge","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"imlib/transform.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/imlib/transform.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":"e162886a782f2923"}},{"code_sha256_prefix":"4ccd6f19d65b0289","entry":"imread","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"imlib/basic.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/imlib/basic.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":"4ccd6f19d65b0289"}},{"code_sha256_prefix":"be1179109aef84de","entry":"load_json","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"pylib/serialization.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/pylib/serialization.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":"be1179109aef84de"}},{"code_sha256_prefix":"e03dc4ba413aef8e","entry":"load_pickle","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"pylib/serialization.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/pylib/serialization.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":"e03dc4ba413aef8e"}},{"code_sha256_prefix":"f57b5b6af6b96676","entry":"load_yaml","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"pylib/serialization.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/pylib/serialization.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":"f57b5b6af6b96676"}},{"code_sha256_prefix":"0b171043968ae8f3","entry":"name","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"pylib/path.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/pylib/path.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":"0b171043968ae8f3"}},{"code_sha256_prefix":"c8424809dcc5cbc2","entry":"run_parallels","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"pylib/processing.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/pylib/processing.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":"c8424809dcc5cbc2"}},{"code_sha256_prefix":"46efef6d32953519","entry":"split","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"pylib/path.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/pylib/path.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":"46efef6d32953519"}},{"code_sha256_prefix":"a304288e1ef66b2f","entry":"timeit","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"pylib/timer.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/pylib/timer.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":"a304288e1ef66b2f"}},{"code_sha256_prefix":"63ddd771c64bd6ba","entry":"to_range","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"imlib/dtype.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/imlib/dtype.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":"63ddd771c64bd6ba"}},{"code_sha256_prefix":"ee49acc532aae040","entry":"uint2im","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"imlib/dtype.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/imlib/dtype.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":"ee49acc532aae040"}},{"code_sha256_prefix":"e325e4aec5e56847","entry":"weight_modulation","repo":"LynnHo/EigenGAN-Tensorflow","repo_kind":"official","path":"tflib/deep_learning/layers_deprecated.py","file_url":"https://github.com/LynnHo/EigenGAN-Tensorflow/blob/HEAD/tflib/deep_learning/layers_deprecated.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":"e325e4aec5e56847"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}