Skip to content

Update engine.py to zero grads prior to accumulation#102

Open
tschoell wants to merge 1 commit intokarpathy:masterfrom
tschoell:zero-grads-before-accumulating
Open

Update engine.py to zero grads prior to accumulation#102
tschoell wants to merge 1 commit intokarpathy:masterfrom
tschoell:zero-grads-before-accumulating

Conversation

@tschoell
Copy link

Because each operator accumulates its gradient during back propagation it's important to zero each grad prior to accumulation.

Without this change calling backward twice will produce the wrong value for grad i.e. backward() is not idempotent currently.

Because each operator accumulates its gradient during back propagation it's important to zero each grad prior to accumulation.

Without this change calling backward twice will produce the wrong value for grad i.e. backward() is not idempotent currently.
IgorTavcar added a commit to IgorTavcar/micrograd that referenced this pull request Mar 5, 2026
- Simplify backward pass: replace _backward closures with _local_grads tuples (from karpathy#115)
- Zero grads before backward for idempotent backward() calls (from karpathy#102)
- Add exp, log, tanh, softmax to Value class
- Add transformer components: Linear, Embedding, LayerNorm, Attention,
  MultiHeadAttention, FeedForward, TransformerBlock, Transformer, cross_entropy
- Move single-output unwrapping from Layer to MLP (from karpathy#111)
- Add input shape assertion in Neuron (from karpathy#107)
- Add MLP test (from karpathy#111)
- Expand .gitignore with standard Python patterns

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant