Thanks @ptrblck! That did the trick in terms of adding the parameters to the model. Should indexing and stacking as shown in the second code block be a problem in terms of back propagating the loss through the network? All the .grads on the parameters are still None at backward(). What is the best way to debug where the gradient might be getting broken if this setup should work?
UPDATE
I found the issue. I was using a copy function and thought it would somehow copy the gradients… it doesn’t 
If you ever want to debug the gradient chain, a crude way is to go inside the object and follow the gradient_fn attribute of the tensor all the way back to your parameters.