Shark directory layout¶
The below diagram gives an overview over the Shark directory structure after having extracted the source code package of shark.
Note
The locations and/or contents of the listed folders may
differ for the pre-compiled binary packages and installers. The contents
of the include/
folder however, are the same across all installation
packages.
The include/
folder’s structure well mirrors the Shark library’s design
choices:
- The
Core/
Folder provides basic interfaces and functionality for math and other utility functions in shark. - In
LinAlg/
, basic vector and matrix functionality is implemented (e.g., by wrapping the Boost C++ uBLAS libraries). - The
Data/
folder for example provides import/export routines, and also sets up a Data class especially suited for machine learning tasks: subsets (e.g., for cross-validation) are lazy copies of the original set. - The folders Rng/` and
Statistics/
implement specialized functionality for random number generation, and various statistical tests or distributions, respectively. - Currently, the only algorithms implemented in the folder
Unsupervised/
are Restricted Boltzmann machines, but this will be expanded in the future. - Finally, one of the most important design aspects of Shark is the
"Model"
-"ObjectiveFunction"
-"Optimizer"
trias. This can be seen as roughly corresponding to the three remaining foldersModels/
,ObjectiveFunctions/
, andAlgorithms/