I am getting this error.
Here is my code
class Adversarial_Multitask(nn.Module):
def __init__(self, bert):
super(Adversarial_Multitask, self).__init__()
self.bert1 = bert
self.bert2 = bert
self.bert3 = bert
self.drop = nn.Dropout(0.1)
self.fc1 = nn.Linear(1536, 2) #Main Task
self.fc2 = nn.Linear(1536, length) #Section Identifcation
self.act = nn.ReLU()
def diff_loss(self, output1, output2):
print(output1.shape)
output1 -= torch.mean(output1, 0)
output2 -= torch.mean(output2, 0)
print(output1.shape)
output1 = torch.norm(output1, dim=1)
output2 = torch.norm(output2, dim=1)
print(output1.shape)
loss_dif = torch.matmul(output1, output2)
return loss_dif
#define the forward pass
def forward(self, batch, x):
#pass the inputs to the model
output2 = self.bert2(batch[0], attention_mask=batch[1])
if (x == 1):
output1 = self.bert1(batch[0], attention_mask=batch[1])
pooled_output = torch.cat((output1[1], output2[1]), dim=1)
output = self.fc1(pooled_output)
loss_dif = 0 #
self.diff_loss(output1[1], output2[1])
else:
output3 = self.bert3(batch[0], attention_mask=batch[1])
pooled_output = torch.cat((output3[1], output2[1]), dim=1)
output = self.fc2(pooled_output)
loss_dif = 0 #
self.diff_loss(output3[1], output2[1])
return output, loss_dif
I am trying to use orthogonality constraint loss for multi task learning as used in this paper: https://www.aclweb.org/anthology/P17-1001.pdf
I am multiplying 2 vectors to get the loss_dif but it is creating this issue. I need that loss for better performance. How can this be solved?