Giter Club home page Giter Club logo

tmac's Introduction

TMAC

Welcome to TMAC: A toolbox that implements a set of modern methods:

  • First-order methods: gradient descent, proximal-point, and prox-gradient algorithms
  • Operator splitting methods based on forward-backward, backward-forward, Douglas-Rachford, Peaceman-Rachford splittings
  • (Block) coordinate update: cyclic, random, parallel Gauss-Seidel index rules
  • Parallel and asynchronous parallel coordinate updates
  • Stochastic gradient methods (coming soon)

You can easily apply these methods to your application by just plugging in the functions or operators specific to your problem.

Components

  • A rich set of operators: proximal operators, projection operators, and gradient operators
  • Operator splitting schemes: forward-backward, backward-forward, Douglas-Rachford, Peaceman-Rachford
  • A shared-memory (asynchronous) parallel driver
  • Examples: (sparse) logistic regression, LASSO, portfolio optimization, nonnegative matrix factorization, insection of two sets
  • Supported dataset formats: matrix market, LIBSVM

Support platforms

Linux, Mac OS X, and Windows (32 and 64 bits)

Installation

Examples

We build a user-friendly interface to run TMAC for different applications through shell. You can run it through the following command:

./run_me.sh

Full documentation

You can view the detailed documentations here.

Develop a new algorithm with the TMAC features

Once you understand TMAC's architecture and interface, it is easy to develop a new algorithm for your problem that inherits many TMAC methods and features. A tutorial is here.

Open collaborations

TMAC includes contributions from a number of people around the world. They are listed here.

Guidelines for contributions: here.

Getting the data

So far, TMAC support the following data format:

You can download some example datasets from here. You can also obtain the regression and classification datasets from the LIBSVM website.

Troubleshooting

Please refer to the FAQ page for troubleshooting. You can also report bugs through the issue tab

Acknowledgement

We would like to acknowledge the Eigen library, the sparse BLAS library, and Google Test.

Related Papers

@article{edmunds2016tmac,
  title={TMAC: A Toolbox of Modern Async-Parallel, Coordinate, Splitting, and Stochastic Methods},
  author={Edmunds, Brent and Peng, Zhimin and Yin, Wotao},
  journal={arXiv preprint arXiv:1606.04551},
  year={2016}
}

@article{peng2015arock,
  title = {ARock: an Algorithmic Framework for Asynchronous Parallel Coordinate Updates},
  author = {Peng, Zhimin and Xu, Yangyang and Yan, Ming and Yin, Wotao},
  journal = {arXiv:1506.02396},
  year = {2015},
  publisher = {http://arxiv.org/abs/1506.02396}
}

@article{PengWuXuYanYin2016_coordinate,
  title = {Coordinate friendly structures, algorithms and applications},
  volume = {1},
  number = {1},
  journal = {Annals of Mathematical Sciences and Applications},
  author = {Peng, Zhimin and Wu, Tianyu and Xu, Yangyang and Yan, Ming and Yin, Wotao},
  month = Jan,
  year = {2016},
  pages = {59--119}
}

tmac's People

Contributors

brentedmunds avatar qinlu-hd avatar shanyintong avatar wotaoyin avatar zhiminpeng avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.