This is the loss function i want to implement:

def corr_basic_calc(weights, y_pred):
num_classes = len(weights[:,0])

m_c = []

sum_m_c = []

for i in range(num_classes):

    m_c.append(y_pred[:,i])

    sum_m_c.append(torch.sum(m_c[i]))

return num_classes, torch.tensor(m_c,dtype=torch.long), torch.tensor(sum_m_c,dtype=torch.long)



Blockquote

def loss_fn(outputs,targets,weights,uncorrelated_c_pairs):

num_classes, m_c, sum_m_c = corr_basic_calc(weights,outputs)
corr_loss=0
for uncorr_c_pair in uncorrelated_c_pairs:
c1, c2, v = uncorr_c_pair

corr_loss += torch.abs(torch.sum(m_c[c1]*m_c[c2])/sum_m_c[c1]-v)

return torch.mean(((weights[:,0]*(1-targets))+(weights[:,1]*targets))torch.nn.BCEWithLogitsLoss()(outputs, targets),axis=1)+0.05corr_loss/len(uncorrelated_c_pairs)

But m getting this error:
 in corr_basic_calc(weights, y_pred)
6         m_c.append(y_pred[:,i])
7         sum_m_c.append(torch.sum(m_c[i]))
----> 8     return num_classes, torch.tensor(m_c,dtype=torch.long), torch.tensor(sum_m_c,dtype=torch.long)
ValueError: only one element tensors can be converted to Python scalars
Can you help me solve it?