I am getting the following error in a custom layer.
RuntimeError: in-place operations can be only used on variables that don't share storage with any other variables, but detected that there are 2 objects sharing it
Here is the forward function of the
def forward(self, batch_sentence1, batch_sentence2): """"Defines the forward computation of the matching layer.""" sequence_length = batch_sentence1.size(1) output_variable = Variable( torch.zeros(self.config.batch_size, sequence_length, self.num_directions, self.length)) for word_idx in range(sequence_length): for batch_idx in range(self.config.batch_size): v1 = batch_sentence1[batch_idx][word_idx] v2 = batch_sentence2[batch_idx][-1] for matching_idx in range(self.length): weighted_v1 = torch.mul(self.weight_forward[matching_idx], v1) weighted_v2 = torch.mul(self.weight_forward[matching_idx], v2) cosine = weighted_v1.dot(weighted_v2) cosine = cosine / (torch.norm(weighted_v1, 2) * torch.norm(weighted_v2, 2)) output_variable[batch_idx][word_idx][matching_idx] = cosine
Getting the error in the last line. I have checked if the
output_variable shares storage with other object but couldn’t find any.
Can anyone point me to the problem in my code?