Papers › GAN Dissection: Visualizing and Understanding Generative Adversarial Networks

GAN Dissection: Visualizing and Understanding Generative Adversarial Networks

26 Nov 2018ICLR 2019 5arXiv:1811.10597archive 2025-07-28

David Bau, Jun-Yan Zhu, Hendrik Strobelt, Bolei Zhou, Joshua B. Tenenbaum, William T. Freeman, Antonio Torralba

Generative Adversarial Networks (GANs) have recently achieved impressive results for many real-world applications, and many GAN variants have emerged with improvements in sample quality and training stability. However, they have not been well visualized or understood. How does a GAN represent our visual world internally? What causes the artifacts in GAN results? How do architectural choices affect GAN learning? Answering such questions could enable us to develop new insights and better models. In this work, we present an analytic framework to visualize and understand GANs at the unit-, object-, and scene-level. We first identify a group of interpretable units that are closely related to object concepts using a segmentation-based network dissection method. Then, we quantify the causal effect of interpretable units by measuring the ability of interventions to control objects in the output. We examine the contextual relationship between these units and their surroundings by inserting the discovered object concepts into new images. We show several practical applications enabled by our framework, from comparing internal representations across different layers, models, and datasets, to improving GANs by locating and removing artifact-causing units, to interactively manipulating objects in a scene. We provide open source interpretation tools to help researchers and practitioners better understand their GAN models.

PaperPDFConference PDFCodeCode Syntology ran

In Syntology Open this paper in Syntology's Atlas, the map of the papers in Syntology's graph and their citations.

For agents, Syntology's MCP tool lists every function and class Syntology harvested from this paper and whether it ran (how to connect): get_harvested_code_for_paper(arxiv_id="1811.10597")

Code

Syntology Ran 4 of 34 code samples harvested from 5 repositories linked to this paper; 30 have no recorded run. Of those that ran: 2 ran · our draft was wrong; 2 ran with no contract checked.

By repository: official repository: 11 samples from 1 repository, 0 ran; community (archive-listed): 23 samples from 4 repositories, 4 ran. The run record, sample by sample. “Ran” means executed on a synthesized input, not that the code is correct or reproduces the paper.

CSAILVision/gandissect officialmentioned in papermentioned on GitHubpytorchMIT report
AllenChen0958/homework3-GAN-Dissection mentioned on GitHubpytorchMIT report
alexandonian/ganocracy mentioned on GitHubpytorchMIT report
cvfx-2019/homework3-GAN-Dissection mentioned on GitHubpytorchMIT report
freedombenLiu/gandissect mentioned on GitHubpytorch report
mit-quest/bridge_gandissect mentioned on GitHubpytorchMIT report
sophiaalexander/GANs-for-High-Schoolers mentioned on GitHubpytorchMIT report

Repository list and official/mentioned flags are the archive's, frozen 2025-07-28. Reachability, where shown, is from one Syntology probe window (2026-09-16 to 2026-09-18); repositories not probed show nothing. GitHub stars are not tracked.

Code Syntology ran Syntology

34 samples harvested; 4 ran; 0 honoured the contract we drafted; 30 have no recorded run. Read from Syntology's graph 2026-09-24; that is when this build read the record, not when the samples ran.

2ran · our draft was wrong
2ran
30unverified

Licence: 0 of the 34 samples are pointer only, meaning Syntology does not serve that copy's text. This page shows no code text for any sample; each one links to its file in the repository.

Harvested from 5 repositories linked to this paper, official or community; each sample names its own and says which. “Ran” means the sample executed on a synthesized input. It does not mean the output is correct, and nothing here reproduces the paper's results. “Honoured” and “violated” refer to a contract Syntology drafted from the code itself; “our draft was wrong” and “fixture could not drive it” are failures of Syntology's instrument, not of the code.

Each sample ends with its code_sha256, Syntology's identity for that exact code. An agent fetches the stored sample with Syntology's MCP tool get_code(code_sha256="…") (how to connect); click an identity to copy that call.

Repository labels, per sample. official repository: The archive marks this repository official for the paper. named in the paper: The archive records that the paper mentions this repository; it is not marked official. community (archive-listed): In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper. found in paper text by Syntology: 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. Samples from a repository marked official are listed first. Licence labels name the repository's licence as recorded at harvest. “Pointer only” means Syntology does not serve that copy's text, for one of four reasons: no licence file was found; the licence was not identified; the licence is recorded as permissive but that copy's record is not marked cleared; or the licence is outside the permissive list Syntology serves text under (MIT, Apache-2.0, BSD and similar). Some licences outside that list permit redistribution, such as WTFPL, and GPL-3.0 under its conditions; they are simply not on the list. Hover a licence label for the reason. File links open the file on GitHub at the default branch, which may have changed since the harvest.

activation_surface CSAILVision/gandissect/netdissect/actviz.py official repository unverified MIT (permissive) · be1a5843b99a3274 · report
activation_visualization CSAILVision/gandissect/netdissect/actviz.py official repository unverified MIT (permissive) · add93cb6d00227f2 · report
annotate_model_shapes CSAILVision/gandissect/netdissect/modelconfig.py official repository unverified MIT (permissive) · 6bc3f04e4a74356d · report
autoimport_eval CSAILVision/gandissect/netdissect/autoeval.py official repository unverified MIT (permissive) · 4acf7e1c09b788e9 · report
build_numpy_category_map CSAILVision/gandissect/netdissect/broden.py official repository unverified MIT (permissive) · 2df0915cd60cd1be · report
create_temp_mmap_grid CSAILVision/gandissect/netdissect/dissection.py official repository unverified MIT (permissive) · 50f195ea6bd9b847 · report
draw_heatmap CSAILVision/gandissect/netdissect/aceoptimize.py official repository unverified MIT (permissive) · 23f4b6af18f81f92 · report
load_json CSAILVision/gandissect/netdissect/easydict.py official repository unverified MIT (permissive) · c4b1e3a489d47780 · report
mask_border CSAILVision/gandissect/netdissect/actviz.py official repository unverified MIT (permissive) · caca87125879a567 · report
scale_summary CSAILVision/gandissect/netdissect/aceoptimize.py official repository unverified MIT (permissive) · 62613471797cd12b · report
shared_temp_mmap_grid CSAILVision/gandissect/netdissect/dissection.py official repository unverified MIT (permissive) · 29455122b233b9d8 · report
D_arch alexandonian/ganocracy/gan_training/ganocracy/models/biggan.py community (archive-listed) ran · our draft was wrong MIT (permissive) · 85eb95cce203dfc7 · report
G_arch alexandonian/ganocracy/gan_training/ganocracy/models/biggan.py community (archive-listed) ran · our draft was wrong MIT (permissive) · e8c308c9283407d7 · report
build_dense_label_array AllenChen0958/homework3-GAN-Dissection/netdissect/broden.py community (archive-listed) ran MIT (permissive) · 1ca87d6074add59d · report
index_has_any_data AllenChen0958/homework3-GAN-Dissection/netdissect/broden.py community (archive-listed) ran MIT (permissive) · 130670bcfa93f2d8 · report
accuracy alexandonian/ganocracy/gan_training/ganocracy/metrics/train_inception.py community (archive-listed) unverified MIT (permissive) · 9b8289076669fe4f · report
activation_surface sophiaalexander/GANDissect-for-High-Schoolers/netdissect/actviz.py community (archive-listed) unverified MIT (permissive) · ea83571322bf19bd · report
activation_visualization sophiaalexander/GANDissect-for-High-Schoolers/netdissect/actviz.py community (archive-listed) unverified MIT (permissive) · 2813ec86a0e1c405 · report
get_layers freedombenLiu/gandissect/netdissect/server.py community (archive-listed) unverified MIT (permissive) · a7ff4317d03c4c34 · report
get_rankings freedombenLiu/gandissect/netdissect/server.py community (archive-listed) unverified MIT (permissive) · 25db45525a41991f · report
get_units freedombenLiu/gandissect/netdissect/server.py community (archive-listed) unverified MIT (permissive) · ba5a60de38335521 · report
gram_schmidt alexandonian/ganocracy/gan_training/ganocracy/layers/norm.py community (archive-listed) unverified MIT (permissive) · 9741295ab539fa46 · report
hook_sizes alexandonian/ganocracy/gan_training/ganocracy/models/utils.py community (archive-listed) unverified MIT (permissive) · 494bb0ccbe9e7198 · report
interp alexandonian/ganocracy/gan_training/ganocracy/utils/visualizer.py community (archive-listed) unverified MIT (permissive) · a4672b1fe29d691a · report
make_svg_bargraph sophiaalexander/GANDissect-for-High-Schoolers/netdissect/bargraph.py community (archive-listed) unverified MIT (permissive) · 02a5ab7f9313f3cf · report
numpy_calculate_frechet_distance alexandonian/ganocracy/gan_training/ganocracy/metrics/inception_score.py community (archive-listed) unverified MIT (permissive) · 7f2187cc95ef4c91 · report
power_iteration alexandonian/ganocracy/gan_training/ganocracy/layers/norm.py community (archive-listed) unverified MIT (permissive) · c14a1db70dacc94a · report
proj alexandonian/ganocracy/gan_training/ganocracy/layers/norm.py community (archive-listed) unverified MIT (permissive) · cc36462ea199cca3 · report
resfile sophiaalexander/GANDissect-for-High-Schoolers/dissect_resnet152.py community (archive-listed) unverified MIT (permissive) · c9a9646005727be8 · report
smooth_data alexandonian/ganocracy/gan_training/ganocracy/utils/visualizer.py community (archive-listed) unverified MIT (permissive) · dcc34da31f1514dd · report
sqrt_newton_schulz alexandonian/ganocracy/gan_training/ganocracy/metrics/inception_score.py community (archive-listed) unverified MIT (permissive) · 16aba3aaeb3655f3 · report
torch_cov alexandonian/ganocracy/gan_training/ganocracy/metrics/inception_score.py community (archive-listed) unverified MIT (permissive) · 764abafe62f0d3e9 · report
truncated_z_sample alexandonian/ganocracy/gan_training/ganocracy/utils/visualizer.py community (archive-listed) unverified MIT (permissive) · db2b0dc3665a41d1 · report
validate alexandonian/ganocracy/gan_training/ganocracy/metrics/train_inception.py community (archive-listed) unverified MIT (permissive) · 65677fad42a182e2 · report

Tasks

Image GenerationObject

Results from the paper archive 2025-07-28

No leaderboard rows for this paper in the archive.

Methods

ConvolutionNetwork Dissection

Report a problem or propose a change · a person checks every report against the paper or source before anything changes; decisions are listed on /corrections