I think that when packed=True is passed to the trainer, the gradient is wrong immediately after densification. The densification duplicates gaussians and prunes them leading to a change in the order and the count of the gaussians.
In this line, a sparse tensor is created with the densified gaussians. But the gaussian_ids have been calculated according to the pre-densification configuration.
This can also be verified by simply printing the maximum value of the gaussian_ids and the shape of the gaussian tensors post-densification. I can see that the maximum value of gaussian_ids is greater than the shape of the post-densification tensors.
I think that when
packed=True
is passed to the trainer, the gradient is wrong immediately after densification. The densification duplicates gaussians and prunes them leading to a change in the order and the count of the gaussians.In this line, a sparse tensor is created with the densified gaussians. But the
gaussian_ids
have been calculated according to the pre-densification configuration.This can also be verified by simply printing the maximum value of the
gaussian_ids
and the shape of the gaussian tensors post-densification. I can see that the maximum value ofgaussian_ids
is greater than the shape of the post-densification tensors.Can someone also verify my thought process?