The state_dict might contain other stuff too.
The problem is that [self.p1.parameters(), self.p2.parameters()] is a list containing two generators, not a list containing a bunch of parameters.
Replace with one of these

[*self.p1.parameters(), *self.p2.parameters()]
list(self.p1.parameters()) + list(self.p2.parameters())