Comments (4)
Hi David,
What is the equation for the whole objective function you want to optimize? If you want to use the usual regularizers for fused lasso, and you are only changing the loss function, then you solve that fairly easily. You can use a proximal gradient or a FISTA algorithm, providing a way of computing the gradient for your loss, and the tools you can find in proxTV for the Total-Variation + L1 regularizer.
from proxtv.
Hi,
First to say is that I'm not an expert with the algorithms. The full function has the usual regularizers and looks like:
min ||Wi(Xi-Yi)||^2 + lambda Wi(Xi-Xj)
in two dimensions.
We are using now a graph fused lasso package from https://github.com/tansey/gfl which works well and can be used for different loss functions. The problem is that the algorithm used there ADMM seems to converge slowly and we are struggling to make it faster as we don't see how to parallelize it.
Can we parallelize FISTA?
If you have suggestions I'd appreciate.
Thanks
David
from proxtv.
ADMM is indeed quite slow unless you find good stepsize parameters, which is no easy task in general. But this problem should be solvable through a combination of FISTA and the 2D Total Variation proximity solver provided in proxTV.
You see, FISTA is a general algorithm for minimizing a sum of a differentiable function (your loss) and a non-differentiable function. For the differentiable part you need to provide a way to compute the gradient of that part, which at first glance should be simple for your problem. For the non-differentiable part you need to provide the prox operator, but you already have that coded in proxTV!
About parallelization, FISTA essentialy alternates between calls to the gradient function and the prox operator you provided. 2D Total Variation here alredy admits parallelization, so half of your problem is already solved.
FISTA is not implemented in this library, though I created some scripts using it for the related paper. I'm attaching a general implementation of FISTA in MATLAB. As you will see, you need to provide gradient and prox functions approriate for your problem, as discussed above.
Hope this helps!
from proxtv.
It definitely helps a lot.
I'll try to implement it and compare with what we have.
Thanks
from proxtv.
Related Issues (20)
- maximum relevant lambda for tv1_1d
- Python demos images not rendering correctly
- Missing docs for lapack pre-requisites HOT 1
- Missing docs for demos dependencies HOT 1
- pls help me in resolving this HOT 2
- Control reaches end of non-void function HOT 1
- Tag 3.2.2 HOT 1
- Precompiled distributions HOT 1
- For complex variables HOT 1
- Prebundled Windows wheels
- 3.3.0 pypi wheels are not valid manylinux wheels HOT 5
- cannot install on macOS or ubuntu HOT 4
- Documentation clarification; monitoring objective functional along iterations HOT 3
- Weighted Objective of the library?
- Please provide either Py3.8 wheels or a sdist on PyPI
- proxtv installation HOT 3
- Second order total variation [feature request] HOT 2
- Behaviour on Mac HOT 1
- plans to port proxtv to numba or cupy HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from proxtv.