I think the graph associated with the computation is something like this

微信图片_20171108210335.jpg1440×1080 36.5 KB

The input to x is a. You say that

then the input buffers in x are freed

But if we inspect a after y.backward(), a still exists. Also upon looking at source of nn.Linear 4, input is stored as an attribute of the module. What does it mean that “input buffers in x are freed”?