Wolfram Function Repository
Instant-use add-on functions for the Wolfram Language
Function Repository Resource:
Compute a 3D embedding for multiple graphs so that all pairwise distances are preserved simultaneously along various 2D projections
ResourceFunction["MultiPerspectiveEmbedding"][gs] gives multi-perspective 3D embedding of graphs gs. | |
ResourceFunction["MultiPerspectiveEmbedding"][ds] gives multi-perspective 3D embedding for explicit distance matrices. |
| "InitialEmbedding" | Automatic | array of initial embedding vectors |
| "InitialProjection" | Automatic | array of initial normal vectors |
| "FixProjection" | False | whether to fix or learn projection vectors |
| "UseGraphEmbedding" | True | if the input is graphs, whether to use its embeddings for computing distances |
| "NormalizeDistances" | True | whether to normalize distances |
| "NetTrainOptions" | {} | custom options for NetTrain |
| TrainingProgressReporting | Automatic | use "Verbose" for custom reporting |
Compute a 3D embedding for a grid graph and a path graph:
| In[1]:= |
|
| Out[1]= |
|
Define larger grid and path graphs and show them:
| In[2]:= |
|
| Out[3]= |
|
Compute an embedding:
| In[4]:= |
|
| Out[4]= |
|
View the embedding with the resource function MultiPerspectiveEmbeddingViewer:
| In[5]:= |
|
| Out[5]= |
|
Here is the progress for training an embedding for points that look like digits 1, 2 and 3 in 2D from three distance matrices and how they form into their position:
| In[6]:= |
|
View the embedding:
| In[7]:= |
|
| Out[7]= |
|
Specify custom options for NetTrain, for example, MaxTrainingRounds:
| In[8]:= |
|
| Out[8]= |
|
Specify an initial embedding:
| In[9]:= |
|
| Out[9]= |
|
Specify initial normal projection vectors using the "InitialProjection" option. The "Normals" key of the resulting association would contain new projection normal vectors after training:
| In[10]:= |
|
| Out[10]= |
|
Disable learning for normal vectors. The "Normals" value stays the same:
| In[11]:= |
|
| Out[11]= |
|
By default, distances are taken to be the distances between its graph embeddings:
| In[12]:= |
|
UseGraphEmbedding → False would use GraphDistanceMatrix instead:
| In[13]:= |
|
Without normalizing distances, training may diverge:
| In[14]:= |
|
This work is licensed under a Creative Commons Attribution 4.0 International License