Great answer, thanks!
May I just also ask :
net = Net()
input = torch.randn(1, 1, 32, 32)
out = net(input)

Why is the method forward() not explicitely called? I mean how does just calling net(output) calls forward()  ? (which is what happens as far as I understand)
By the way I dont understand what this line means:
super(Net, self).__init__()
I can imagine super() is calling the constructor of a parent class but …?