self.weight seems to be on the CPU, since you’ve used a list for it.
To properly push parameters to the device, either register them directly as nn.Parameters or use nn.ParameterList instead of a Python list.