Referring to the documentation of pooling’s backward function here: API Reference :: NVIDIA Deep Learning cuDNN Documentation
What’s the difference between dy, dyDesc and dx, dxDesc? I thought (max) pooling backward would just return gradients for the input? Do I need to provide the gradients received from the next layer as dy and store max-pooling’s grads in dx? So, basically, will the backward function basically check which element resulted in the output and copy the gradient from dy for that element and 0 for others in the window?
Hi,
In the forward pass, x is the input and y is the output, while in the backward pass, dy is the input and dx is the output.
However, x and y are also required as the inputs in the backward pass, which is the reason there’re 3 inputs + 1 output.
Thank you.
Hi,
So, if I understand it correctly,
in the forward pass:
x- Input
y- Output
and in the backward pass:
x- Input to the backward pass which is the previously generated output i.e.yfrom the forward pass.
y- Previously used input i.e.xfrom the forward pass.
dx- Gradients received from the next layer i.e. the layer which received pooling layer’s output in the forward pass.
dy- Gradients generated by the backward pass.
Is that correct?
Yes.