• ndickson-nvidia's avatar
    [Feature] Added exclude_self and output_batch to knn graph construction... · 684f66b7
    ndickson-nvidia authored
    
    [Feature] Added exclude_self and output_batch to knn graph construction (Issues #4323 #4316) (#4389)
    
    * * Added "exclude_self" and "output_batch" options to knn_graph and segmented_knn_graph
    * Updated out-of-date comments on remove_edges and remove_self_loop, since they now preserve batch information
    
    * * Changed defaults on new knn_graph and segmented_knn_graph function parameters, for compatibility; pytorch/test_geometry.py was failing
    
    * * Added test to ensure dgl.remove_self_loop function correctly updates batch information
    
    * * Added new knn_graph and segmented_knn_graph parameters to dgl.nn.KNNGraph and dgl.nn.SegmentedKNNGraph
    
    * * Formatting
    
    * * Oops, I missed the one in segmented_knn_graph when I fixed the similar thing in knn_graph
    
    * * Fixed edge case handling when invalid k specified, since it still needs to be handled consistently for tests to pass
    * Fixed context of batch info, since it must match the context of the input position data for remove_self_loop to succeed
    
    * * Fixed batch info resulting from knn_graph when output_batch is true, for case of 3D input tensor, representing multiple segments
    
    * * Added testing of new exclude_self and output_batch parameters on knn_graph and segmented_knn_graph, and their wrappers, KNNGraph and SegmentedKNNGraph, into the test_knn_cuda test
    
    * * Added doc comments for new parameters
    
    * * Added correct handling for uncommon case of k or more coincident points when excluding self edges in knn_graph and segmented_knn_graph
    * Added test cases for more than k coincident points
    
    * * Updated doc comments for output_batch parameters for clarity
    
    * * Linter formatting fixes
    
    * * Extracted out common function for test_knn_cpu and test_knn_cuda, to add the new test cases to test_knn_cpu
    
    * * Rewording in doc comments
    
    * * Removed output_batch parameter from knn_graph and segmented_knn_graph, in favour of always setting the batch information, except in knn_graph if x is a 2D tensor
    Co-authored-by: default avatarMinjie Wang <wmjlyjemaine@gmail.com>
    684f66b7
test_transform.py 109 KB