Hello everyone. I am trying to extra data during training Resnet18. In my case it is gender information expressed as  gender=Tensor([g]), where g =[-1|0|1] for [female|unknown|male] , and some shape descriptor obtained in previous steps, which is of the form  desc=Tensor([...]),  desc.shape = ([64,]) .
I tried to follow the example at this thread 6 but my loss value becomes NaN in the first epoch. Changing the learning rate does not help
Here is the modified resnet18 function that i use. in the comments i put the shape and magnitudes of tensors. As you can see the data that i want to add is already normalized:

def forward(self, x,descdata,genderdata):
#x.shape = #torch.Size([4, 3, 224, 224])
# descdata.shape = torch.Size([ 4,64])
# genderdata.shape = torch.Size([1,4])
    x = self.conv1(x) #torch.Size([4, 64, 112, 112])
    x = self.bn1(x) #torch.Size([4, 64, 112, 112])
    x = self.relu(x) # torch.Size([4, 64, 112, 112])
    x = self.maxpool(x) #torch.Size([4, 64, 56, 56])

    x = self.layer1(x) #torch.Size([4, 64, 56, 56])
    x = self.layer2(x) #torch.Size([4, 128, 28, 28])
    x = self.layer3(x) #torch.Size([4, 256, 14, 14])
    x = self.layer4(x) #torch.Size([4, 512, 7, 7])

    x = self.avgpool(x) #torch.Size([4, 512, 1, 1])
    x = torch.flatten(x, 1) #torch.Size([4, 512])
    x = self.fc(x) #torch.Size([4, 35]); torch.norm(x,dim=1) == tensor([4.4604, 1.9574, 2.0123, 1.9583])


    y = genderdata.transpose(1,0) #torch.Size([4, 1]);  torch.norm(y,dim=1) == tensor([1., 1., 1., 1.])
   

    z1 = torch.cat([x,y,descdata.type(torch.float32)],dim=1) #torch.Size([4, 100]); torch.norm(z1,dim=1) == tensor([3.6243, 2.5945, 3.1520, 3.0312])
    z1 = self.relu2(self.fc2(z1))   # self.relu2 = nn.ReLU(); self.fc2  = nn.Linear(num_classes+1+64, (num_classes+1+64)*2)   defined in __init__ 
    z1 = self.fc3(z1)  #  self.fc3 = nn.Linear((num_classes+1+64)*2, num_classes)  defined in __init__ 
    return z1


Would you know how to properly add the extra data to the layer?
Best
Chris