What the role actually was
Rarely a question about a lecture slide. Most threads were a training run that had quietly gone wrong: a generator producing noise, a discriminator that had already won, losses that looked fine while the samples did not.
The work was reading unfamiliar PyTorch, finding the smallest reproduction, and explaining the mechanism instead of handing over a patch.
Diagnosing adversarial training failures
- Problem
- GANs fail quietly. The loss curve stays plausible while the samples collapse, so learners could not tell a bug from an unstable equilibrium.
- Approach
- Worked through the usual causes with them — mode collapse, a discriminator overpowering the generator, vanishing gradients from a saturating loss, detached tensors breaking the graph, and normalisation or activation choices in the wrong place.
- Result
- Learners left able to read a symptom and locate its cause themselves, rather than resetting the notebook and hoping.
Architectures, and the decisions behind them
DCGANs and conditional GANs early on, then StyleGAN's mapping network and adaptive instance normalisation, Pix2Pix for paired image-to-image translation, and CycleGAN for the unpaired case.
Architecture questions were usually about trade-offs: where to condition, what the discriminator can actually see, and what the loss is really rewarding.
Evaluation, and what it hides
Fréchet Inception Distance, and the fidelity-versus-diversity trade-off underneath it — a model can score well while covering a fraction of the distribution.
The same threads often ran into bias: where it enters the training data, how it surfaces in generated samples, and which parts of it can be measured rather than assumed.
Applied GANs, and what I contributed
The later course work moves into application — data augmentation for small datasets, and privacy-preserving synthetic data for cases where the real records cannot leave the building.
Alongside mentoring I contributed improvements to the projects and worked examples, so the material was clearer and gave learners more to run for themselves.
If you cannot explain why the gradient vanished, you did not understand it.


