class_docstr: A temporary struct used to store keypoint detections and their log-probabilities.
  
  After construction, merge_with_descriptors is used to select corresponding descriptors from unet output.
class_docstr_tok: ["A","temporary","struct","used","to","store","keypoint","detections","and","their","log-probabilities",".","After","construction",",","merge_with_descriptors","is","used","to","select","corresponding","descriptors","from","unet","output","."]
docstr: Select descriptors from a dense `descriptors` tensor, at locations given by `self.xys`
docstr_tok: ["Select","descriptors","from","a","dense","`","descriptors","`","tensor",",","at","locations","given","by","`","self.xys","`"]
code: def merge_with_descriptors(self, descriptors: Tensor) -> DISKFeatures:
      """Select descriptors from a dense `descriptors` tensor, at locations given by `self.xys`"""
      dtype = descriptors.dtype
      x, y = self.xys.T
  
      desc = descriptors[:, y, x].T
      desc = F.normalize(desc, dim=-1)
  
      return DISKFeatures(self.xys.to(dtype), desc, self.detection_logp)
  
file_path: kornia/kornia/feature/disk/structs.py
imports: from __future__ import annotations
  from dataclasses import dataclass
  from typing import Any
  import torch.nn.functional
  from kornia.core import Device, Tensor
label_desc: Use image node_id 1 for calling the Keypoints obj's underlying member method code with example usage: obj.merge_with_descriptors(descriptors) and returns: DISKFeatures