diff --git a/nerfstudio/fields/base_field.py b/nerfstudio/fields/base_field.py index 043a29e01..c24d9659c 100644 --- a/nerfstudio/fields/base_field.py +++ b/nerfstudio/fields/base_field.py @@ -74,10 +74,15 @@ class Field(nn.Module): self._sample_locations.shape[:-1] == self._density_before_activation.shape[:-1] ), "Sample locations and density must have the same shape besides the last dimension." - self._density_before_activation.backward( - gradient=torch.ones_like(self._density_before_activation), inputs=self._sample_locations, retain_graph=True - ) - normals = -torch.nn.functional.normalize(self._sample_locations.grad, dim=-1) + normals = torch.autograd.grad( + self._density_before_activation, + self._sample_locations, + grad_outputs=torch.ones_like(self._density_before_activation), + retain_graph=True, + )[0] + + normals = -torch.nn.functional.normalize(normals, dim=-1) + return normals @abstractmethod