public Tensor IndexSelectGrad(Tensor grad, Tensor adj, Tensor indice) { if (grad == null) { throw new ArgumentNullException($"Tensor grad should not be null."); } int ndim = adj.DimensionCount; long storageSize = TensorDimensionHelpers.GetStorageSize(adj.Sizes, adj.Strides); long cols = adj.Sizes[ndim - 1]; if (storageSize % cols != 0) { throw new Exception($"Invalid tensor storage size = '{storageSize}', and cols = '{cols}'"); } long rows = storageSize / cols; TensorApplyCPU.IndexSelectGrad(grad, adj, indice, (int)rows, (int)cols); return(grad); }