@Gkv @RGaonkar I have the same problem here.
My weights never be updated and  my model list(model.parameters())[0].grad is None . And my Network didn’t return any grad_fn in tensor.
It turns out I have to return the function instead of variable. I don’t know it is correct or not but it worked for me.
Bug source code
class Model(nn.Module):
    def __init__(self, size_in, size_out):
        super(Model, self).__init__()
        self.ReLU1 = nn.ReLU()
        self.conv1 = nn.Conv2d(in_channels=size_in, out_channels=size_out,
                               kernel_size=(3, 3),
                               stride=(1, 1),
                               padding=(1, 1),
                               dilation=1,
                               groups=1,
                               bias=False)

    def forward(self, x):
        x = self.ReLU1(x)
        x = self.conv1(x)
        return x

You guys could try this:
class Model(nn.Module):
    def __init__(self, size_in, size_out):
        super(Model, self).__init__()
        self.ReLU1 = nn.ReLU()
        self.conv1 = nn.Conv2d(in_channels=size_in, out_channels=size_out,
                               kernel_size=(3, 3),
                               stride=(1, 1),
                               padding=(1, 1),
                               dilation=1,
                               groups=1,
                               bias=False)

    def forward(self, x):
        x = self.ReLU1(x)
        return self.conv1(x)