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 :doxy:`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/
