Home
=======================================
.. raw:: html
    
 
 
NCVX Package
-------------
**NCVX (NonConVeX)** is a user-friendly and scalable python software package targeting general nonsmooth NCVX problems with nonsmooth constraints. **NCVX** is being developed by `GLOVEX `_ at the Department of Computer Science & Engineering, University of Minnesota, Twin Cities. 
The initial release of **NCVX** contains the solver **PyGRANSO**, a PyTorch-enabled port of `GRANSO `_ incorporating auto-differentiation, GPU acceleration, tensor input, and support for new QP solvers. As a highlight, **PyGRANSO** can solve general constrained deep learning problems, the first of its kind. 
.. raw:: html
    
 
 
.. raw:: html
    PyGRANSO: A PyTorch-enabled port of GRANSO with auto-differentiation 
Get the Code
-------------
The source code of NCVX Package is available in the `NCVX Repository `_. 
The source code of PyGRANSO Solver is available in the `PyGRANSO Repository `_. 
Update Logs
-----------------
**Version: 1.2.0 --- 2022-07-26**
   * Description: major fixes and improvements on LBFGS and Steering Strategy.
   * Fixed: Reducing memory usage for LBFGS. Now PyGRANSO can solve problem with ~15k parameters by using 14 GB memory; Update example: ortho RNN with max folding and orthonormal initialization; Allow high precision for QP solver; Allow part of optimization variables not showing up in objective (see SVM example); Fixed Code 12: terminated with steering failure; Fixed stationary failure: try different stationarity calculation, or set stationarity measure to be inf if encounter numerical issue
   * Added: Reorganize and add examples: perceptual/lp norm attack on ImageNet images. trace optimization with orthogonal constraints; unconstrained deep learning with LeNet5; logistic regression.
**Version: 1.1.0 --- 2022-02-20**
   * Description: major fixes and improvements.
   * Fixed: Avoid gradient accumulating in deep learning problem; Prevent memory leak problem when using torch tensor. See ex6 perceptual attack.
   * Changed: Update format of user-defined variables when using pygranso interface.
   * Packaging: Publish pygranso package on Pypi.
   * Added: ex 10 dictionary learning with torch.nn module; ex 11 orthogonal recurrent neural networks.
**Version: 1.0.0 --- 2021-12-27**
   * Description: initial public release of PyGRANSO.
   * Main features: auto-differentiation, GPU acceleration, tensor input, scalable QP solver, and zero dependency on proprietary packages. Multiple new examples added.
Contents
--------
.. toctree::
   :maxdepth: 1
   intro
   install
   settings/index
   examples/index
   highlight/index
   mistakes
   citation
   NCVX PyGRANSO Forum 
Acknowledgements
----------------------
We would like to thank `Frank E. Curtis `_  and `Michael L. Overton `_ for their involvement in creating the BFGS-SQP algorithm that is implemented in the software package `GRANSO `_. This work was supported by UMII Seed Grant Program and NSF CMMI 2038403.
Contact
----------------------
For questions or bug reports, please either:
    * raise issues in the `PyGRANSO Repository `_ or
    * send an email to our `NCVX PyGRANSO forum `_: ncvx@umn.edu
Main authors:
        * Buyun Liang (byliang an_at_symbol seas a_dot_symbol upenn a_dot_symbol edu)
        * Tim Mitchell (tim an_at_symbol timmitchell a_dot_symbol com)
        * Ju Sun (jusun an_at_symbol umn a_dot_symbol edu)
Also, we are always looking for contributors and collaborators.
.. raw:: html
    