cvxgrp / pymde

Minimum-distortion embedding with PyTorch
https://pymde.org
Apache License 2.0
526 stars 27 forks source link

warning message from pytorch #39

Closed ivan-marroquin closed 3 years ago

ivan-marroquin commented 3 years ago

Hi,

Many thanks for making available this nice package!

I have a windows machine with Python 3.6.5 and install pymde-0.1.11, torch-1.9.0, torchvision-0.10.0

To produce a 3D embedding, I used this commands: embedding= pymde.preserve_neighbors(input_data, embedding_dim= intrinsic_dim, attractive_penalty= pymde.penalties.Log1p, repulsive_penalty= pymde.penalties.Log, constraint= pymde.Standardized(), n_neighbors= 5, repulsive_fraction= 0.5, init= 'random', device= 'cpu') projected_data= embedding.embed(max_iter= 350, memory_size= 20)

which produced the warning message shown below. Will this warning affect the quality of the projection?

C:\Temp\Python\Python3.6.5\lib\site-packages\pymde\constraints.py:182: UserWarning: torch.symeig is deprecated in favor of torch.linalg.eigh and will be removed in a future PyTorch release. The default behavior has changed from using the upper triangular portion of the matrix by default to using the lower triangular portion. L, _ = torch.symeig(A, upper=upper) should be replaced with L = torch.linalg.eigvalsh(A, UPLO='U' if upper else 'L') and L, V = torch.symeig(A, eigenvectors=True) should be replaced with L, V = torch.linalg.eigh(A, UPLO='U' if upper else 'L') (Triggered internally at ..\aten\src\ATen\native\BatchLinearAlgebra.cpp:2500.) lmbda, Q = torch.symeig(X.T @ X, eigenvectors=True) C:\Temp\Python\Python3.6.5\lib\site-packages\torch_tensor.py:575: UserWarning: floor_divide is deprecated, and will be removed in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor'). (Triggered internally at ..\aten\src\ATen\native\BinaryOps.cpp:467.) return torch.floor_divide(self, other)

Thanks,

Ivan

ivan-marroquin commented 3 years ago

Here is another one when using these commands

embedding= pymde.preserve_neighbors(input_data, embedding_dim= intrinsic_dim, attractive_penalty= pymde.penalties.Log, repulsive_penalty= pymde.penalties.LogRatio, constraint= None, n_neighbors= 5, repulsive_fraction= 0.75, init= 'random', device= 'cpu')

projected_data= embedding.embed(max_iter= 350, memory_size= 20)

C:\Temp\Python\Python3.6.5\lib\site-packages\torch_tensor.py:575: UserWarning: floor_divide is deprecated, and will be removed in a future version of pytorch. It currently rounds toward 0 (like the 'trunc' function NOT 'floor'). This results in incorrect rounding for negative values. To keep the current behavior, use torch.div(a, b, rounding_mode='trunc'), or for actual floor division, use torch.div(a, b, rounding_mode='floor'). (Triggered internally at ..\aten\src\ATen\native\BinaryOps.cpp:467.) return torch.floor_divide(self, other)

akshayka commented 3 years ago

Thanks for reporting! I'll make a fix for this.

These warning messages will not however affect the quality of the embedding.

ivan-marroquin commented 3 years ago

Hi @akshayka

Thanks for confirming about the quality of the embedding is not affected.

Ivan