The issue got cleared, even pytorch started ranting that you can’t just overwrite variables, therefore using different variable names, might be hogging on GPU memory, could you guys confirm and give some solution if it is the case?
Thanks.
Below is the updated code.
def forward(self, x):
    # Conv
    base1 = self.conv1(x)
    base1 = self.bn1(base1)
    base1 = self.relu(base1)

    # pass 2 | bL-module
    little1 = base1; big1 = base1;
    big1 = self.conv2(big1)
    big1 = self.bn2(big1)
    big1 = self.relu(big1)
    little1 = self.littleblock(little1)
    assert (big1.shape == little1.shape)
    base2 = little1 + big1

    # pass 3 | `ResBlockB`s & `ResBlockL`s  planes = 64
    little2 = base2; big2 = base2;
    big2 = self.big_layer1(big2)
    little2 = self.little_layer1(little2)
    # print ('1st layer passed')
    base3 = self.transition1([big2, little2])

    # pass 4 | planes = 128
    little3 = base3; big3 = base3;
    big3 = self.big_layer2(big3)
    little3 = self.little_layer2(little3)
    # print ('2nd layer passed')
    base4 = self.transition2([big3, little3])

    # pass 5 | planes = 256
    little4 = base4; big4 = base4;
    big4 = self.big_layer3(big4)
    little4 = self.little_layer3(little4)
    # print ('3rd layer passed')
    out = self.transition3([big4, little4])

    # pass 6 | Res_Block | planes = 512
    out = self.res_layer1(out)

    # avg pooling
    out = self.avgpool(out)
    out = out.view(out.size(0), -1)
    out = self.fc(out)

    return out