This repository organizes materials from the original book "Grokking Deep Learning" (mostly notebooks) for learning purposes and aims to port parts of the examples to Julia.
Grokking Deep Learning — Official page
ℹ️ Note: This repository may include the following submodules or references:
Book: The original repository containing the source (mostlyPython) example notebooks.BookJuliaPort: Community/third-party examples ported toJulia.
- Use the original book's example notebooks (originally in
Python) as learning material. - Port examples step-by-step to
Juliafor educational comparison and experiments. - Document design and numerical differences encountered during porting.
Prerequisites: Julia 1.8 or later, git, and optionally jupyter (or jupyterlab).
- Activate the
Juliaenvironment at the repository root and install packages:
julia --project=. -e 'import Pkg; Pkg.activate("."); Pkg.instantiate()'If the repository contains submodules (on first clone), initialize them first:
git submodule update --init --recursive- To open the notebooks in Jupyter (requires the
IJuliakernel):
julia --project=. -e 'import Pkg; Pkg.add("IJulia"); using IJulia; installkernel("Grok")'
jupyter labOr to run Pluto notebooks (if you prefer Pluto):
julia --project=. -e 'import Pkg; Pkg.add("Pluto"); using Pluto; Pluto.run()'Book/: Original (mostlyPython) notebooks and data files used as source material — usually a submodule of the original repo.BookJuliaPort/: Community / third-partyJuliaports of examples (submodule).src/Grok.jl: SupportingJuliacode (utilities used during porting).Project.toml,Manifest.toml:Juliaenvironment and dependencies.
Example data files: shakespear.txt, labels.txt, spam.txt, etc., are used by some notebooks.
- Follow the original notebook cell-by-cell and reproduce the same numbers/outputs.
- Replace
NumPy/Matplotlibcalls withJuliaequivalents such asLinearAlgebra,Plots.jlorImages.jl. - For automatic differentiation examples, compare
Zygote.jlwith simple numeric-differentiation implementations. - Record major numerical or performance differences as comments in the notebook when porting.
- Confirm whether original cell inputs/outputs are reproduced.
- Add required packages to
Project.toml. - Fix plot labels/axes so visualizations match the originals.
- To port or modify, fork → branch → open a PR. Include: changed files, short run instructions, and (optionally) screenshots of reproduced examples.
- This repository is a learning-oriented port/notes collection. Respect the original author's copyright and licensing when using source materials — check the original work's license/permissions.
- Plans include porting more chapters to
Juliaor adding simple automated checks that validate cell reproduction. - For questions or contributions, please use this repository's issue tracker.
Refer to the Book/ directory 📂 for the list and links of original (Python) notebooks. Julia port examples will be added sequentially to src/.