it’s hard to tell where is wrong for me, Maybe wrong init, maybe too large learning rate or maybe other reasons. I would like to advice you to print every layer output to find more information. it’s also a good idea to add pdb.set_trace in forward
def forward(self, x):
        x = nnFunctions.leaky_relu(self.conv1(x))
        print x.data
        x = nnFunctions.leaky_relu(self.conv2(x))
        print x.data
        x = nnFunctions.leaky_relu(self.conv3(x))
        print x.data 
        x=nnFunctions.leaky_relu(self.Pconv1(x))+nnFunctions.leaky_relu(self.Pconv2(x))+nnFunctions.leaky_relu(self.Pconv3(x))
		print x.data
        x=nnFunctions.leaky_relu(self.conv6(x))
        x=nnFunctions.leaky_relu(self.conv7(x))
        return x