Closed yonghyeokrhee closed 3 years ago
Do all the fancyimpute
tests pass locally on your machine?
Same issue happened for me... It occurs with the test code as well of the nuclear_norm_minimization.
Can you paste the error trace?
System: Windows 10 Python: 3.6 Inside a conda environment
SCS v2.1.2 - Splitting Conic Solver
Lin-sys: sparse-direct, nnz in A = 228 File ~/Documents/GitHub/fancyimpute/test/test_nuclear_norm_minimization.py", line 34, in test_rank1_convex_solver eps = 1.00e-04, alpha = 1.50, max_iters = 50000, normalize = 1, scale = 1.00 XY_completed_rank1 = solver.fit_transform(XY_missing_rank1) acceleration_lookback = 0, rho_x = 1.00e-03 Variables n = 105, constraints m = 155 File "~\Documents\GitHub\fancyimpute\fancyimpute\solver.py", line 186, in fit_transform Cones: primal zero / dual free vars: 25 linear vars: 75 X_result = self.solve(X_filled, missing_mask) sd vars: 55, sd blks: 1 File "~\Documents\GitHub\fancyimpute\fancyimpute\nuclear_norm_minimization.py", line 127, in solve FATAL: Cannot solve SDPs with > 2x2 matrices without linked blas+lapack libraries use_indirect=False) Install blas+lapack and re-compile SCS with blas+lapack library locations ERROR: init_cone failure File "~\Anaconda3\envs\pytorch\lib\site-packages\cvxpy\problems\problem.py", line 290, in solve Setup time: 2.09e-04s return solve_func(self, *args, **kwargs) Failure:could not initialize work File "~\Anaconda3\envs\pytorch\lib\site-packages\cvxpy\problems\problem.py", line 575, in _solve self.unpack_results(solution, full_chain, inverse_data) File "~\Anaconda3\envs\pytorch\lib\site-packages\cvxpy\problems\problem.py", line 718, in unpack_results "Try another solver, or solve with verbose=True for more " cvxpy.error.SolverError: Solver 'SCS' failed. Try another solver, or solve with verbose=True for more information.
Weird. I guess something went wrong with CVXPY
. We're not really supporting this package anymore unfortunately. You feel like mucking about with other solvers to see if the tests pass?
I'll see what I can do. PS: sorry for the messed up traceback, I did not realize it is doing markdown formatting.
I finally managed to make it run on windows. The way I managed to fix it was mainly by installing cvxpy with its dependencies from the unofficial Windows binaries except for SCS that I used the pip install method. It is still not performing as well as the one I installed on Linux. Apparently cvxpy overflows some shape variables when data is big while on Linux it just converts to a bigger variable size (or maybe it starts with a long in from the beginning. Hopefully the updated Windows binaries could handle this better. Currently, I am only able to solve very small data sets.
Well that sucks, sorry. Doesn't really seem like there's much we can do on our end except: (a) remove this algorithm entirely or (b) see if other solvers work better (not SCS).
That's fine, when I actually tested this method on Linux on my simulated data, it takes too long while not outperforming other algorithms that I even removed it from my codes. Thanks a lot though for the discussion.
Sure, thanks for your investigation! I'll reopen this ticket so others can see in case they have issues.
We've officially replaced the SCS solver to CVXOPT in #129 . Please try to pip install the new version and see if it works.
machine: windows 10 python evn ; anaconda 5.4/ python 3.6 pip install fancyimpute conda install cvxpy
It keeps saying that SolverError: Solver 'SCS' failed. Try another solver or solve with verbose=True for more information. Try recentering the problem data around 0 and rescaling to reduce the dynamic range.