| 543 | return dense_F, min_coordinate, tensor_stride |
| 544 | |
| 545 | def interpolate(self, X): |
| 546 | from MinkowskiTensorField import TensorField |
| 547 | |
| 548 | assert isinstance(X, TensorField) |
| 549 | if self.coordinate_map_key in X._splat: |
| 550 | tensor_map, field_map, weights, size = X._splat[self.coordinate_map_key] |
| 551 | size = torch.Size([size[1], size[0]]) # transpose |
| 552 | features = MinkowskiSPMMFunction().apply( |
| 553 | field_map, tensor_map, weights, size, self._F |
| 554 | ) |
| 555 | else: |
| 556 | features = self.features_at_coordinates(X.C) |
| 557 | return TensorField( |
| 558 | features=features, |
| 559 | coordinate_field_map_key=X.coordinate_field_map_key, |
| 560 | coordinate_manager=X.coordinate_manager, |
| 561 | ) |
| 562 | |
| 563 | def slice(self, X): |
| 564 | r""" |