In the 04-how-does-a-neural-net-really-work.ipynb
notebook walkthrough in Lesson 3 of the series, the following was utterly confusing to me:
I wasn’t able to wrap my head around why, simply calling quad_mae
on abc
set a grad_fn
on it and magically associated it with abc
such that calling loss.backward()
would update abc.grad
what???
Hence I did the steps done in quad_mae
function manually to see what actually was happening:
Turns out, doing mk_quad(*abc)
actually makes the coefficients as single valued tensors and attaches a grad_fn
to each of them.
then doing loss2 = mae(quad_f(x), y)
again attaches a grad_fn
it decides to be appropriate for the use case, in this case MeanBackward0
. I believe this was chosen since we did .mean()
in the mae
function. I tried changing .mean()
→ .min()
in mae
and it changed the grad_fn
in loss2
to MinBackward1
.
Finally, a bit relieved to figure this out.