Skip to content

Instantly share code, notes, and snippets.

@cinjon
Created June 9, 2020 02:06
Show Gist options
  • Save cinjon/b36b8add654c4418276aa39ebd15d8b6 to your computer and use it in GitHub Desktop.
Save cinjon/b36b8add654c4418276aa39ebd15d8b6 to your computer and use it in GitHub Desktop.
import scipy.sparse as sps
from scipy.spatial.distance import pdist, squareform
def get_normalized_laplacian(sq_distances, sigma_features):
squareform_sq_distances = np.exp(-squareform(sq_distances) / (2 * sigma_features**2))
lap = sps.csgraph.laplacian(squareform_sq_distances, normed=True, return_diag=False)
return lap
def get_square_distances(output):
# output: [512, 128, 10, 18]
output = output.reshape(512, -1).transpose()
sq_distances = pdist(output, 'sqeuclidean')
return sq_distances
num_clusters = 50
sigma_features = 3.0
sq_distances = get_square_distances(output)
norm_laplace = get_normalized_laplacian(sqdistances, sigma_features=sigma_features)
eigenvalues, eigenvectors = sps.linalg.eigsh(norm_laplace, k=num_clusters, which='SA')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment