Skip to content

Planned Features for v0.0.1

Gagandeep Singh edited this page Jun 18, 2020 · 2 revisions

0.0.1 will be the first release of adaboost.

Following goals should be accomplished before we go for our first release,

  1. Improving the Directory Structure - Currently, the directory structure of the project is a bit unmanageable and faces the following problems and some solutions for the same are proposed,
  • The files instantiated_templates_*.hpp are scattered across all the modules. This pollutes the modules with a lot of unreadable code which is mostly generated automatically. To solve this, all instantiated_templates_*.hpp should be collected and placed under a single module, templates.

  • The cuda module should replicate the structure of the project for CPU code i.e., modules like, core, utils, operations, should be placed under cuda as well with their CUDA implementation.

  1. Refactoring Code Base - The details are given in https://github.com/codezonediitj/adaboost/issues/10

  2. Operations - The following operations should be added.

  • Sum - For summation of elements of a Vector
  • Argmax - Finding the input for which a given function maximizes its value.
  • I - Returns a boolean if the given condition is true.

Some API suggestions,

Sum(function_pointer address, Vector, start, end)

Argmax(function_pointer, Vector)

I(function_pointer)

The above APIs should be implemented for both CPU and CUDA devices [2].

  1. Implementing the Two Class AdaBoost Algorithm - See [1].

  2. Implementing Multi-Class AdaBoost Algorithm - See [1].

  3. Writing Python bindings for C++ code using either of pybind11 or Boost.Python

  4. Writing Memory and Thread Manager - This goal is optional but if possible should be accomplished. This will require modifying the constructors and destructors of C++ classes and creating separate singleton classes for each kind of manager that will manage the references to these objects/threads. They should be capable of tasks like killing threads in case of exceptions, releasing memory if sufficient space isn't available for creating new object. This will also require the code to use only heap memory.

References

[1] https://web.stanford.edu/~hastie/Papers/samme.pdf

[2] https://stackoverflow.com/a/12374170

Clone this wiki locally