I want to stack some tensors keeping their automatic gradient information but screw up.
I have the following script where I want to compute the derivative with respect to
_k_plusplus =  for aplus_idx, aplus_val in enumerate(aplus): state_plus = torch.tensor([x, aplus_val])[None, :] pred_mean = likelihood(gp_kplus(state_plus)).mean _k_plusplus.append(pred_mean) k_plusplus = torch.stack(_k_plusplus).flatten()
tensor([0.3481, 0.3481, 0.3481, 0.3481, 0.3481], dtype=torch.float64, grad_fn=<ViewBackward>)
It seems to be OK for me, but with this syntax,
Here note that
pred_mean = likelihood(gp_kplus(state_plus)).mean is coming from
tensor([0.2027], dtype=torch.float64, grad_fn=<ViewBackward>)
again it seems to be reasonable for me.
My guess is when I stack the tensors by
torch.stack or maybe at some points, I lose the automatic gradient information.
When I simplify the script:
k_plusplus = torch.empty(aplus.shape) for aplus_idx, aplus_val in enumerate(aplus): k_plusplus[aplus_idx] = torch.tensor(0.1)
It passes the gradient check without changing the rest of my code.
Thank you in advance for your kind help.