Skip to content

Commit

Permalink
Embedding Projector: perform consistent knn calculation
Browse files Browse the repository at this point in the history
  • Loading branch information
alicialics committed Apr 27, 2023
1 parent b72d751 commit 811f3d0
Showing 1 changed file with 6 additions and 14 deletions.
20 changes: 6 additions & 14 deletions tensorboard/plugins/projector/vz_projector/data.ts
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export interface DataPoint {
[key: string]: number;
};
}
const IS_FIREFOX = navigator.userAgent.toLowerCase().indexOf('firefox') >= 0;

/** Maximum sample size for each projection type. */
export const TSNE_SAMPLE_SIZE = 10000;
export const UMAP_SAMPLE_SIZE = 5000;
Expand Down Expand Up @@ -470,23 +470,15 @@ export class DataSet {
.map((neighbors) => neighbors.slice(0, nNeighbors))
);
} else {
const knnGpuEnabled = (await util.hasWebGLSupport()) && !IS_FIREFOX;
const numKnnNeighborsToCompute = Math.max(
nNeighbors,
MIN_NUM_KNN_NEIGHBORS
);
const result = await (knnGpuEnabled
? knn.findKNNGPUCosDistNorm(
data,
numKnnNeighborsToCompute,
(d) => d.vector
)
: knn.findKNN(
data,
numKnnNeighborsToCompute,
(d) => d.vector,
(a, b) => vector.cosDistNorm(a, b)
));
const result = await knn.findKNNGPUCosDistNorm(
data,
numKnnNeighborsToCompute,
(d) => d.vector
);
this.nearest = result;
return Promise.resolve(
result.map((neighbors) => neighbors.slice(0, nNeighbors))
Expand Down

0 comments on commit 811f3d0

Please sign in to comment.