I’m not familiar with your use case, but note that rewrapping tensors in new tensors will detach them from the computation graph and no gradients will be calcualted.
Also calling .item() will return a Python literal and would thus detach the result.
This is the case in your forward method:
binary_realisation = Tensor([model.forward(x).item(
        ) for model in self.classifiers_list[0:self.c_count]]).repeat(self.l_count+self.c_count, 1)

binary_realisation will be a new tensor and thus Autograd will not backpropagate to model and any parameter in it.
If that’s not desired, remove the Tensor usage as well as the item() operation and create a new tensor via torch.stack or torch.cat.
Also, Autograd won’t track any operations inside the no_grad() block, but I assume that’s intended.