What it was
A fork of MorvanZhou’s PyTorch tutorial repo (github.com/MorvanZhou/PyTorch-Tutorial) during the period in 2019 when I was switching from TensorFlow to PyTorch. The fork was mainly to keep a personal cache of the notebooks with my own scratch changes — not a substantive contribution.
Why PyTorch over TensorFlow
By mid-2019 the research community had largely converged on PyTorch for three reasons:
- Eager execution by default. No
Session.run(), no static graph prototxt. The Pythonic code is the computation graph. - Autograd is intuitive. Backward works on any tensor with
requires_grad=True. You can grad-check by hand. - The DataLoader pattern. Iterable datasets with
__getitem__+__len__+ a sampler is the right abstraction for training data. TensorFlow’s tfrecord pipeline was always more friction.
By 2026 PyTorch is the default and TensorFlow is essentially deprecated for research; the bet was correct.
What it taught me
The framework that lets you fail fast wins. PyTorch’s debuggability (set a breakpoint, inspect a tensor, modify, continue) is a 10x iteration-speed advantage over compile-and-pray static graphs. Every ML project since then has been in PyTorch (or JAX where the functional-purity tradeoff is worth it).