Could you give us the the code of your three_layer_convnet?
Normally you have a model (which contains the parameters) and your data, which you transfer using .to(device) to your desired device (GPU) and the job is more or less done. In your case you have a model three_layer_convnet and params - second you generated yourself. Your params are on the given device, but your three_layer_convnet isn’t. So now it depends on what your three_layer_convnet does; does it use your given params or the parameters of the three_layer_convnet.