Git Product home page Git Product logo

models's Introduction

mlpack: a fast, header-only machine learning library
a fast, header-only machine learning library

Azure DevOps builds (job) License NumFOCUS

Download: current stable version (4.3.0)

mlpack is an intuitive, fast, and flexible header-only C++ machine learning library with bindings to other languages. It is meant to be a machine learning analog to LAPACK, and aims to implement a wide array of machine learning methods and functions as a "swiss army knife" for machine learning researchers.

mlpack's lightweight C++ implementation makes it ideal for deployment, and it can also be used for interactive prototyping via C++ notebooks (these can be seen in action on mlpack's homepage).

In addition to its powerful C++ interface, mlpack also provides command-line programs, Python bindings, Julia bindings, Go bindings and R bindings.

Quick links:

mlpack uses an open governance model and is fiscally sponsored by NumFOCUS. Consider making a tax-deductible donation to help the project pay for developer time, professional services, travel, workshops, and a variety of other needs.


0. Contents

  1. Citation details
  2. Dependencies
  3. Installing and using mlpack in C++
  4. Building mlpack bindings to other languages
    1. Command-line programs
    2. Python bindings
    3. R bindings
    4. Julia bindings
    5. Go bindings
  5. Building mlpack's test suite
  6. Further resources

1. Citation details

If you use mlpack in your research or software, please cite mlpack using the citation below (given in BibTeX format):

@article{mlpack2023,
    title     = {mlpack 4: a fast, header-only C++ machine learning library},
    author    = {Ryan R. Curtin and Marcus Edel and Omar Shrit and 
                 Shubham Agrawal and Suryoday Basak and James J. Balamuta and 
                 Ryan Birmingham and Kartik Dutt and Dirk Eddelbuettel and 
                 Rishabh Garg and Shikhar Jaiswal and Aakash Kaushik and 
                 Sangyeon Kim and Anjishnu Mukherjee and Nanubala Gnana Sai and 
                 Nippun Sharma and Yashwant Singh Parihar and Roshan Swain and 
                 Conrad Sanderson},
    journal   = {Journal of Open Source Software},
    volume    = {8},
    number    = {82},
    pages     = {5026},
    year      = {2023},
    doi       = {10.21105/joss.05026},
    url       = {https://doi.org/10.21105/joss.05026}
}

Citations are beneficial for the growth and improvement of mlpack.

2. Dependencies

mlpack requires the following additional dependencies:

If the STB library headers are available, image loading support will be available.

If you are compiling Armadillo by hand, ensure that LAPACK and BLAS are enabled.

3. Installing and using mlpack in C++

See also the C++ quickstart.

Since mlpack is a header-only library, installing just the headers for use in a C++ application is trivial.

From the root of the sources, configure and install in the standard CMake way:

mkdir build && cd build/
cmake ..
sudo make install

If the cmake .. command fails due to unavailable dependencies, consider either using the -DDOWNLOAD_DEPENDENCIES=ON option as detailed in the following subsection, or ensure that mlpack's dependencies are installed, e.g. using the system package manager. For example, on Debian and Ubuntu, all relevant dependencies can be installed with sudo apt-get install libarmadillo-dev libensmallen-dev libcereal-dev libstb-dev g++ cmake.

Alternatively, since CMake v3.14.0 the cmake command can create the build folder itself, and so the above commands can be rewritten as follows:

cmake -S . -B build
sudo cmake --build build --target install

During configuration, CMake adjusts the file mlpack/config.hpp using the details of the local system. This file can be modified by hand as necessary before or after installation.

3.1. Additional build options

You can add a few arguments to the cmake command to control the behavior of the configuration and build process. Simply add these to the cmake command. Some options are given below:

  • -DDOWNLOAD_DEPENDENCIES=ON will automatically download mlpack's dependencies (ensmallen, Armadillo, and cereal). Installing Armadillo this way is not recommended and it is better to use your system package manager when possible (see below).
  • -DCMAKE_INSTALL_PREFIX=/install/root/ will set the root of the install directory to /install/root when make install is run.
  • -DDEBUG=ON will enable debugging symbols in any compiled bindings or tests.

There are also options to enable building bindings to each language that mlpack supports; those are detailed in the following sections.

Once headers are installed with make install, using mlpack in an application consists only of including it. So, your program should include mlpack:

#include <mlpack.hpp>

and when you link, be sure to link against Armadillo. If your example program is my_program.cpp, your compiler is GCC, and you would like to compile with OpenMP support (recommended) and optimizations, compile like this:

g++ -O3 -std=c++14 -o my_program my_program.cpp -larmadillo -fopenmp

Note that if you want to serialize (save or load) neural networks, you should add #define MLPACK_ENABLE_ANN_SERIALIZATION before including <mlpack.hpp>. If you don't define MLPACK_ENABLE_ANN_SERIALIZATION and your code serializes a neural network, a compilation error will occur.

See the C++ quickstart and the examples repository for some examples of mlpack applications in C++, with corresponding Makefiles.

3.1.a. Linking with autodownloaded Armadillo

When the autodownloader is used to download Armadillo (-DDOWNLOAD_DEPENDENCIES=ON), the Armadillo runtime library is not built and Armadillo must be used in header-only mode. The autodownloader also does not download dependencies of Armadillo such as OpenBLAS. For this reason, it is recommended to instead install Armadillo using your system package manager, which will also install the dependencies of Armadillo. For example, on Ubuntu and Debian systems, Armadillo can be installed with

sudo apt-get install libarmadillo-dev

and other package managers such as dnf and brew and pacman also have Armadillo packages available.

If the autodownloader is used to provide Armadillo, mlpack programs cannot be linked with -larmadillo. Instead, you must link directly with the dependencies of Armadillo. For example, on a system that has OpenBLAS available, compilation can be done like this:

g++ -O3 -std=c++14 -o my_program my_program.cpp -lopenblas -fopenmp

See the Armadillo documentation for more information on linking Armadillo programs.

3.2. Reducing compile time

mlpack is a template-heavy library, and if care is not used, compilation time of a project can be increased greatly. Fortunately, there are a number of ways to reduce compilation time:

  • Include individual headers, like <mlpack/methods/decision_tree.hpp>, if you are only using one component, instead of <mlpack.hpp>. This reduces the amount of work the compiler has to do.

  • Only use the MLPACK_ENABLE_ANN_SERIALIZATION definition if you are serializing neural networks in your code. When this define is enabled, compilation time will increase significantly, as the compiler must generate code for every possible type of layer. (The large amount of extra compilation overhead is why this is not enabled by default.)

  • If you are using mlpack in multiple .cpp files, consider using extern templates so that the compiler only instantiates each template once; add an explicit template instantiation for each mlpack template type you want to use in a .cpp file, and then use extern definitions elsewhere to let the compiler know it exists in a different file.

Other strategies exist too, such as precompiled headers, compiler options, ccache, and others.

4. Building mlpack bindings to other languages

mlpack is not just a header-only library: it also comes with bindings to a number of other languages, this allows flexible use of mlpack's efficient implementations from languages that aren't C++.

In general, you should not need to build these by hand---they should be provided by either your system package manager or your language's package manager.

Building the bindings for a particular language is done by calling cmake with different options; each example below shows how to configure an individual set of bindings, but it is of course possible to combine the options and build bindings for many languages at once.

4.i. Command-line programs

See also the command-line quickstart.

The command-line programs have no extra dependencies. The set of programs that will be compiled is detailed and documented on the command-line program documentation page.

From the root of the mlpack sources, run the following commands to build and install the command-line bindings:

mkdir build && cd build/
cmake -DBUILD_CLI_PROGRAMS=ON ../
make
sudo make install

You can use make -j<N>, where N is the number of cores on your machine, to build in parallel; e.g., make -j4 will use 4 cores to build.

4.ii. Python bindings

See also the Python quickstart.

mlpack's Python bindings are available on PyPI and conda-forge, and can be installed with either pip install mlpack or conda install -c conda-forge mlpack. These sources are recommended, as building the Python bindings by hand can be complex.

With that in mind, if you would still like to manually build the mlpack Python bindings, first make sure that the following Python packages are installed:

  • setuptools
  • wheel
  • cython >= 0.24
  • numpy
  • pandas >= 0.15.0

Now, from the root of the mlpack sources, run the following commands to build and install the Python bindings:

mkdir build && cd build/
cmake -DBUILD_PYTHON_BINDINGS=ON ../
make
sudo make install

You can use make -j<N>, where N is the number of cores on your machine, to build in parallel; e.g., make -j4 will use 4 cores to build. You can also specify a custom Python interpreter with the CMake option -DPYTHON_EXECUTABLE=/path/to/python.

4.iii. R bindings

See also the R quickstart.

mlpack's R bindings are available as the R package mlpack on CRAN. You can install the package by running install.packages('mlpack'), and this is the recommended way of getting mlpack in R.

If you still wish to build the R bindings by hand, first make sure the following dependencies are installed:

  • R >= 4.0
  • Rcpp >= 0.12.12
  • RcppArmadillo >= 0.9.800.0
  • RcppEnsmallen >= 0.2.10.0
  • roxygen2
  • testthat
  • pkgbuild

These can be installed with install.packages() inside of your R environment. Once the dependencies are available, you can configure mlpack and build the R bindings by running the following commands from the root of the mlpack sources:

mkdir build && cd build/
cmake -DBUILD_R_BINDINGS=ON ../
make
sudo make install

You may need to specify the location of the R program in the cmake command with the option -DR_EXECUTABLE=/path/to/R.

Once the build is complete, a tarball can be found under the build directory in src/mlpack/bindings/R/, and then that can be installed into your R environment with a command like install.packages(mlpack_3.4.3.tar.gz, repos=NULL, type='source').

4.iv. Julia bindings

See also the Julia quickstart.

mlpack's Julia bindings are available by installing the mlpack.jl package using Pkg.add("mlpack.jl"). The process of building, packaging, and distributing mlpack's Julia bindings is very nontrivial, so it is recommended to simply use the version available in Pkg, but if you want to build the bindings by hand anyway, you can configure and build them by running the following commands from the root of the mlpack sources:

mkdir build && cd build/
cmake -DBUILD_JULIA_BINDINGS=ON ../
make

If CMake cannot find your Julia installation, you can add -DJULIA_EXECUTABLE=/path/to/julia to the CMake configuration step.

Note that the make install step is not done above, since the Julia binding build system was not meant to be installed directly. Instead, to use handbuilt bindings (for instance, to test them), one option is to start Julia with JULIA_PROJECT set as an environment variable:

cd build/src/mlpack/bindings/julia/mlpack/
JULIA_PROJECT=$PWD julia

and then using mlpack should work.

4.v. Go bindings

See also the Go quickstart.

To build mlpack's Go bindings, ensure that Go >= 1.11.0 is installed, and that the Gonum package is available. You can use go get to install mlpack for Go:

go get -u -d mlpack.org/v1/mlpack
cd ${GOPATH}/src/mlpack.org/v1/mlpack
make install

The process of building the Go bindings by hand is a little tedious, so following the steps above is recommended. However, if you wish to build the Go bindings by hand anyway, you can do this by running the following commands from the root of the mlpack sources:

mkdir build && cd build/
cmake -DBUILD_GO_BINDINGS=ON ../
make
sudo make install

5. Building mlpack's test suite

mlpack contains an extensive test suite that exercises every part of the codebase. It is easy to build and run the tests with CMake and CTest, as below:

mkdir build && cd build/
cmake -DBUILD_TESTS=ON ../
make
ctest .

If you want to test the bindings, too, you will have to adapt the CMake configuration command to turn on the language bindings that you want to test---see the previous sections for details.

6. Further Resources

More documentation is available for both users and developers.

User documentation:

Tutorials:

Developer documentation:

To learn about the development goals of mlpack in the short- and medium-term future, see the vision document.

If you have problems, find a bug, or need help, you can try visiting the mlpack help page, or mlpack on Github. Alternately, mlpack help can be found on Matrix at #mlpack; see also the community page.

models's People

Contributors

aakash-kaushik avatar akhandait avatar birm avatar daiviknema avatar e-freiman avatar flying-sheep avatar hello-fri-end avatar jeffin143 avatar kartikdutt18 avatar kimsangyeon-dgu avatar manthan-r-sheth avatar mulx10 avatar pandeynandancse avatar rcurtin avatar rishabhgarg108 avatar s1998 avatar saksham189 avatar shikharj avatar shrit avatar shubham1206agra avatar sreenikss avatar yashsharan avatar zoq avatar zsogitbe avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

models's Issues

Adding More Augmentation.

Hey everyone,
Recently Augmentation class was added. It currently supports only resize function. This issue aims to add other augmentations as well.
Background :

  1. Each augmentation must be accessible by passing string to the class.
  2. Each Transform should have same function definition as ResizeTransform.
  3. Idea is to create a map of function pointers and call respective function based upon the string type.

Some augmentations that would be really nice to see would be horizontal flip, vertical flip and gaussian noise. Thanks a lot.

Finish transition to models/examples repository

I just wanted to create an issue to point out that there are some cleanup bits that need to be done in this repository after the changes we decided to make to the repository structure in mlpack/examples#61.

This is the "models" repository, which will contain ready-to-use implementations of popular machine learning model types that aren't available in the normal mlpack codebase. These can be used as bindings.

So, here's a basic todo:

  • update README
  • set up mlpack-bot
  • set up labels
  • remove any "simple" examples and replace with bindings that have CLI support, etc.
  • set up CMake configuration so that the models can be compiled. Maybe that means using git submodules and the mlpack repository's CMake configuration?
  • update any references to the models/ repository
  • update the website to point to this repository

Namespace and Include guards

Points to Discuss:

  1. For now the models repo uses mlpack namespace in some files and just plain nothing in some so should this repository have its namespace in all the files or just carry the mlpack namespace.
  2. the include guard in all the files follows a format as MODELS_FILENAME.HPP, I propose that it follows a similar structure such as mlpack which will be MODELS_FOLDER_NAME_FILENAME.HPP.

also please keep in mind that for now this repository doesn't have any installation candidate or place that it is installed in but that will be included in it very soon, I am just figuring out how to configure install with cmake and i will do that then.

mlpack version specific

Is the examples given works only for a specific mlpack version?
If yes please provide the version of mlpack.

Alpha matting model

Alpha matting refers to the problem of extracting foreground from an image. Given an input image, and a trimap, the alpha matting model would extract the foreground.

Would it be of any use if I could add an implementation of Global sampling based method for Alpha matting?

I have also written a blog that might help in understanding the paper.

Question about the response array for a LSTM (many-to-one) model

Hello,

So I have been trying to learn how to use LSTM with mlpack. I am using a simple example that I found online (https://stackabuse.com/solving-sequence-problems-with-lstm-in-keras/) that was implemented in keras. In this example, the training cube matrix is composed of 1 feature, 15 samples and 3 time steps. Each sample is composed of 3 numbers. Say for instance that the first sample is [1 2 3], the second one is [4 5 6], etc. The output array will look something like this [6, 15 ....]. In other words, it simply the sum of the 3 time steps. The input cube matrix is ok, but I am having problems to understand what I am doing wrong with the output array. Now, RNN only accepts a cube matrix for the response, so I decided to create a cube matrix with the following dimension: trainY.set_size(1,15,1). The same would apply for testing data, which would be: testY.set_size(1,1,3). Unfortunately, the results don't make any sense and I don't even understand why the output of the testing data returns 3 values instead of just one. Why isn't possible to use a vector for the response data, as done in keras? I am obviously doing something wrong, but I cannot figure out what. I am pasting my code here. Thank you so much for your help!!!

//----------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------//
#include <mlpack/core.hpp>
#include <mlpack/prereqs.hpp>
#include <mlpack/methods/ann/rnn.hpp>
#include <mlpack/methods/ann/layer/layer.hpp>
#include <mlpack/core/data/scaler_methods/min_max_scaler.hpp>
#include <mlpack/methods/ann/init_rules/he_init.hpp>
#include <mlpack/methods/ann/loss_functions/mean_squared_error.hpp>
#include <mlpack/core/data/split_data.hpp>
#include <ensmallen.hpp>

//Check that we have the correct version
#if ((ENS_VERSION_MAJOR < 2) || ((ENS_VERSION_MAJOR == 2) && (ENS_VERSION_MINOR < 13)))

#error "need ensmallen version 2.13.0 or later"

#endif

using namespace std;
using namespace mlpack;
using namespace mlpack::ann;
using namespace ens;

int main()
{

const int rho = 3;
size_t inputSize = 1; //Number of MEL coefficients
size_t outputSize = 1; //Size of the output

const double RATIO = 0.1; //Ratio of the testing data
const double STEP_SIZE = 5e-5; //Steo size of the optimizer

const int H1 = 50;
const size_t BATCH_SIZE = 5; //Size of the batch
const int EPOCHS = 500; //Maximum number of epochs for training the data

arma::cube trainX;
trainX.set_size(inputSize,15,rho); //training data
arma::cube trainY;
trainY.set_size(inputSize,15,1); //labels

int track_val = 1;

for(int kk = 0; kk < 15; kk++)
{

    for(int ll = 0; ll < 3; ll++)
    {

            trainX(0,kk,ll) = track_val;
            trainY(0,kk,0) += track_val;

            std::cout << trainX(0,kk,ll) << "\t";

            track_val++;


    }

    std::cout << trainY(0,kk,0) << "\n";

}

RNN<MeanSquaredError<>, HeInitialization> model(rho,true);

             model.Add<IdentityLayer<>>();
             model.Add<LSTM<>>(inputSize, H1, rho);

            // model.Add<Dropout<>>(0.2);
             model.Add<LeakyReLU<>>();
             model.Add<Linear<>>(H1,outputSize);

             ens::Adam optimizer(
                             STEP_SIZE,
                             BATCH_SIZE,
                             0.9,
                             0.999,
                             1e-8,
                             trainX.n_cols*EPOCHS,
                             1e-8,
                             true);

             optimizer.Tolerance() = -1;


             model.Train(
                            trainX,
                            trainY,
                            optimizer,
                            ens::PrintLoss(),
                            ens::ProgressBar(),
                            ens::EarlyStopAtMinLoss()
                    );

    //Testing
    arma::cube testY;
    testY.set_size(inputSize,outputSize,3);
    testY(0,0,0) = 50;
    testY(0,0,1) = 51;
    testY(0,0,2) = 52;

    arma::cube predOutP;        //3D matrix used to save the results obtained from the testing data
            model.Predict(testY, predOutP);

            std::cout << predOutP(0,0,0) << "\n";
            std::cout << predOutP(0,0,1) << "\n";
            std::cout << predOutP(0,0,2) << "\n";

}
//----------------------------------------------------------------------------------------------------//
//----------------------------------------------------------------------------------------------------//

I am adding the code that I have for keras, in case it can help find what I am doing wrong:

from numpy import array
from keras.preprocessing.text import one_hot
from keras.preprocessing.sequence import pad_sequences
from keras.models import Sequential
from keras.layers.core import Activation, Dropout, Dense
from keras.layers import Flatten, LSTM
from keras.layers import GlobalMaxPooling1D
from keras.models import Model
from keras.layers.embeddings import Embedding
from sklearn.model_selection import train_test_split
from keras.preprocessing.text import Tokenizer
from keras.layers import Input
from keras.layers.merge import Concatenate
from keras.layers import Bidirectional

import pandas as pd
import numpy as np
import re

X = np.array([x+1 for x in range(45)])
X = X.reshape(15,3,1)
#print(X)
Y = list()
for x in X:
Y.append(x.sum())

Y = np.array(Y)
print(Y)
model = Sequential()
model.add(LSTM(50, activation='relu', input_shape=(3, 1)))
model.add(Dense(1))
model.compile(optimizer='adam', loss='mse')

history = model.fit(X, Y, epochs=500, validation_split=0.2, verbose=1)

test_input = array([50,51,52])
test_input = test_input.reshape((1, 3, 1))
#print(test_input.shape)
test_output = model.predict(test_input, verbose=0)
print(test_output)

Restructure of the model files

There are two things i would like to talk about.

  1. Currently the structure for the models inthe repo is something like this
- models
  - yolo
    - yolo files
  - darkent 
    - darknet files

This means that when a user wants to use say models if it was installed which we don't have right now someone would need to write

// Not sure if there would be models two times, just going by the repo strcture. 
#include <models/models/resnet/yolo.hpp> 

I propose to change the structure to something like this:

- models
    - yolo files
    - darknet files

so the importing for the user becomes something like

#include <models/models/yolo.hpp> 
  1. Have a single file that the user can include and have access to all the models without the burden of dragging all the code and using only the code for the model which has been used.
    I am not sure of how we can do the second one without impacting the build time.

Tracker for improvements in models doc.

Following are some of the things i would work on:

  • Trying to move the indexing on the left as side pane or something.
  • Avoiding full path names, it print jenkins/docs and all of that as file path.
  • take a look at fixed-width fonts.
  • Maybe swap the theme for a more subtle one.

Feel free to point more things if you notice any and here is the docs link if someone missed it.

Addition of MobileNet V1

Creating a issue to track the progress of Mobilenet and discuss things before we have a PR for this.

Created: mlpack/mlpack#3007 to add depthwise seperable convolutions.
And we still don't have a final reference from which we are going to build mobilenet from but that's secondary for now, but i will keep looking for it.

Tasks.

  1. Get mlpack/mlpack#3007 merged.
  2. Using tensorflow reference to build MobileNet.
  3. Start implemetation and create a PR for the same: #72
  4. Get ReLU6 mlpack/mlpack#3009 merged.

References:

  1. Mobilenet V1 paper

cc: @zoq, @kartikdutt18

Fix build.

With recent changes in mlpack such as switches in serialisation etc. The azure build is failing hence the build needs to be fixed.

Error while building on M1 macbook

I am getting the following error while building from source on M1 macbook air.

Scanning dependencies of target models_test
[ 16%] Building CXX object tests/CMakeFiles/models_test.dir/augmentation_tests.cpp.o
[ 33%] Building CXX object tests/CMakeFiles/models_test.dir/ffn_model_tests.cpp.o
[ 50%] Building CXX object tests/CMakeFiles/models_test.dir/dataloader_tests.cpp.o
[ 66%] Building CXX object tests/CMakeFiles/models_test.dir/preprocessor_tests.cpp.o
[ 83%] Building CXX object tests/CMakeFiles/models_test.dir/utils_tests.cpp.o
[100%] Linking CXX executable ../bin/models_test
ld: warning: ignoring file /opt/homebrew/lib/libboost_filesystem-mt.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
ld: warning: ignoring file /opt/homebrew/lib/libboost_unit_test_framework-mt.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
ld: warning: ignoring file /opt/homebrew/lib/libboost_system-mt.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
ld: warning: ignoring file /opt/homebrew/lib/libboost_serialization-mt.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
ld: warning: ignoring file /opt/homebrew/lib/libboost_regex-mt.dylib, building for macOS-x86_64 but attempting to link with file built for macOS-arm64
Undefined symbols for architecture x86_64:
  "boost::filesystem::detail::current_path(boost::system::error_code*)", referenced from:
      boost::filesystem::current_path() in dataloader_tests.cpp.o
      boost::filesystem::current_path() in utils_tests.cpp.o
  "boost::filesystem::detail::dir_itr_close(void*&, void*&)", referenced from:
      boost::filesystem::detail::dir_itr_imp::~dir_itr_imp() in dataloader_tests.cpp.o
  "boost::filesystem::detail::directory_iterator_construct(boost::filesystem::directory_iterator&, boost::filesystem::path const&, unsigned int, boost::system::error_code*)", referenced from:
      boost::filesystem::directory_iterator::directory_iterator(boost::filesystem::path const&, boost::filesystem::directory_options) in dataloader_tests.cpp.o
  "boost::filesystem::detail::directory_iterator_increment(boost::filesystem::directory_iterator&, boost::system::error_code*)", referenced from:
      boost::filesystem::directory_iterator::increment() in dataloader_tests.cpp.o
  "boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)", referenced from:
      boost::filesystem::is_regular_file(boost::filesystem::path const&) in dataloader_tests.cpp.o
      boost::filesystem::is_directory(boost::filesystem::path const&) in dataloader_tests.cpp.o
  "boost::test_tools::tt_detail::print_log_value<bool>::operator()(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, bool)", referenced from:
      std::__1::basic_ostream<char, std::__1::char_traits<char> >& boost::test_tools::tt_detail::operator<<<bool>(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, boost::test_tools::tt_detail::print_helper_t<bool> const&) in utils_tests.cpp.o
  "boost::test_tools::tt_detail::report_assertion(boost::test_tools::assertion_result const&, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long, ...)", referenced from:
      bool boost::test_tools::tt_detail::check_frwd<boost::test_tools::tt_detail::equal_impl_frwd, unsigned long long, int>(boost::test_tools::tt_detail::equal_impl_frwd, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long long const&, char const*, int const&, char const*) in augmentation_tests.cpp.o
      bool boost::test_tools::tt_detail::check_frwd<boost::test_tools::tt_detail::equal_impl_frwd, unsigned long long, int>(boost::test_tools::tt_detail::equal_impl_frwd, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long long const&, char const*, int const&, char const*) in ffn_model_tests.cpp.o
      DataLoadersTest::CSVDataLoaderTest::test_method() in dataloader_tests.cpp.o
      bool boost::test_tools::tt_detail::check_frwd<boost::test_tools::tt_detail::equal_impl_frwd, unsigned long long, int>(boost::test_tools::tt_detail::equal_impl_frwd, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long long const&, char const*, int const&, char const*) in dataloader_tests.cpp.o
      bool boost::test_tools::tt_detail::check_frwd<boost::test_tools::tt_detail::equal_impl_frwd, unsigned long, int>(boost::test_tools::tt_detail::equal_impl_frwd, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, unsigned long const&, char const*, int const&, char const*) in dataloader_tests.cpp.o
      bool boost::test_tools::tt_detail::check_frwd<boost::test_tools::check_is_close_t, double, double, boost::math::fpc::percent_tolerance_t<double> >(boost::test_tools::check_is_close_t, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, double const&, char const*, double const&, char const*, boost::math::fpc::percent_tolerance_t<double> const&, char const*) in preprocessor_tests.cpp.o
      bool boost::test_tools::tt_detail::check_frwd<boost::test_tools::check_is_small_t, double, double>(boost::test_tools::check_is_small_t, boost::unit_test::lazy_ostream const&, boost::unit_test::basic_cstring<char const>, unsigned long, boost::test_tools::tt_detail::tool_level, boost::test_tools::tt_detail::check_type, double const&, char const*, double const&, char const*) in preprocessor_tests.cpp.o
      ...
  "boost::regex_error::regex_error(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, boost::regex_constants::error_type, long)", referenced from:
      boost::re_detail_107500::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail_107500::re_syntax_base*) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail_107500::re_syntax_base*) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmap(boost::re_detail_107500::re_syntax_base*, unsigned char*, unsigned int*, unsigned char) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long) in dataloader_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail_107500::re_syntax_base*) in dataloader_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail_107500::re_syntax_base*) in dataloader_tests.cpp.o
      ...
  "boost::regex_error::~regex_error()", referenced from:
      boost::re_detail_107500::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail_107500::re_syntax_base*) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail_107500::re_syntax_base*) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmap(boost::re_detail_107500::re_syntax_base*, unsigned char*, unsigned int*, unsigned char) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long) in dataloader_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail_107500::re_syntax_base*) in dataloader_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail_107500::re_syntax_base*) in dataloader_tests.cpp.o
      ...
  "boost::re_detail_107500::raw_storage::insert(unsigned long, unsigned long)", referenced from:
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::insert_state(long, boost::re_detail_107500::syntax_element_type, unsigned long) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::insert_state(long, boost::re_detail_107500::syntax_element_type, unsigned long) in dataloader_tests.cpp.o
  "boost::re_detail_107500::raw_storage::resize(unsigned long)", referenced from:
      boost::re_detail_107500::raw_storage::extend(unsigned long) in augmentation_tests.cpp.o
      boost::re_detail_107500::raw_storage::extend(unsigned long) in dataloader_tests.cpp.o
  "boost::re_detail_107500::get_mem_block()", referenced from:
      boost::re_detail_107500::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::extend_stack() in augmentation_tests.cpp.o
      boost::re_detail_107500::save_state_init::save_state_init(boost::re_detail_107500::saved_state**, boost::re_detail_107500::saved_state**) in augmentation_tests.cpp.o
      boost::re_detail_107500::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::extend_stack() in dataloader_tests.cpp.o
      boost::re_detail_107500::save_state_init::save_state_init(boost::re_detail_107500::saved_state**, boost::re_detail_107500::saved_state**) in dataloader_tests.cpp.o
  "boost::re_detail_107500::put_mem_block(void*)", referenced from:
      boost::re_detail_107500::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::unwind_extra_block(bool) in augmentation_tests.cpp.o
      boost::re_detail_107500::save_state_init::~save_state_init() in augmentation_tests.cpp.o
      boost::re_detail_107500::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::unwind_extra_block(bool) in dataloader_tests.cpp.o
      boost::re_detail_107500::save_state_init::~save_state_init() in dataloader_tests.cpp.o
  "boost::re_detail_107500::verify_options(unsigned int, boost::regex_constants::_match_flags)", referenced from:
      boost::re_detail_107500::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find_imp() in augmentation_tests.cpp.o
      boost::re_detail_107500::perl_matcher<std::__1::__wrap_iter<char const*>, std::__1::allocator<boost::sub_match<std::__1::__wrap_iter<char const*> > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find_imp() in dataloader_tests.cpp.o
  "boost::re_detail_107500::raise_runtime_error(std::runtime_error const&)", referenced from:
      boost::re_detail_107500::cpp_regex_traits_implementation<char>::init() in augmentation_tests.cpp.o
      void boost::re_detail_107500::raise_error<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >(boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::error_type) in augmentation_tests.cpp.o
      boost::re_detail_107500::cpp_regex_traits_implementation<char>::init() in dataloader_tests.cpp.o
      void boost::re_detail_107500::raise_error<boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > >(boost::regex_traits_wrapper<boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::error_type) in dataloader_tests.cpp.o
  "boost::re_detail_107500::get_default_error_string(boost::regex_constants::error_type)", referenced from:
      boost::re_detail_107500::cpp_regex_traits_implementation<char>::init() in augmentation_tests.cpp.o
      boost::re_detail_107500::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const in augmentation_tests.cpp.o
      boost::re_detail_107500::cpp_regex_traits_implementation<char>::init() in dataloader_tests.cpp.o
      boost::re_detail_107500::cpp_regex_traits_implementation<char>::error_string(boost::regex_constants::error_type) const in dataloader_tests.cpp.o
  "boost::re_detail_107500::cpp_regex_traits_char_layer<char>::init()", referenced from:
      boost::re_detail_107500::cpp_regex_traits_char_layer<char>::cpp_regex_traits_char_layer(boost::re_detail_107500::cpp_regex_traits_base<char> const&) in augmentation_tests.cpp.o
      boost::re_detail_107500::cpp_regex_traits_char_layer<char>::cpp_regex_traits_char_layer(boost::re_detail_107500::cpp_regex_traits_base<char> const&) in dataloader_tests.cpp.o
  "boost::re_detail_107500::lookup_default_collate_name(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
      boost::re_detail_107500::cpp_regex_traits_implementation<char>::lookup_collatename(char const*, char const*) const in augmentation_tests.cpp.o
      boost::re_detail_107500::cpp_regex_traits_implementation<char>::lookup_collatename(char const*, char const*) const in dataloader_tests.cpp.o
  "boost::scoped_static_mutex_lock::scoped_static_mutex_lock(boost::static_mutex&, bool)", referenced from:
      boost::object_cache<boost::re_detail_107500::cpp_regex_traits_base<char>, boost::re_detail_107500::cpp_regex_traits_implementation<char> >::get(boost::re_detail_107500::cpp_regex_traits_base<char> const&, unsigned long) in augmentation_tests.cpp.o
      boost::cpp_regex_traits<char>::get_catalog_name() in augmentation_tests.cpp.o
      boost::object_cache<boost::re_detail_107500::cpp_regex_traits_base<char>, boost::re_detail_107500::cpp_regex_traits_implementation<char> >::get(boost::re_detail_107500::cpp_regex_traits_base<char> const&, unsigned long) in dataloader_tests.cpp.o
      boost::cpp_regex_traits<char>::get_catalog_name() in dataloader_tests.cpp.o
  "boost::scoped_static_mutex_lock::~scoped_static_mutex_lock()", referenced from:
      boost::object_cache<boost::re_detail_107500::cpp_regex_traits_base<char>, boost::re_detail_107500::cpp_regex_traits_implementation<char> >::get(boost::re_detail_107500::cpp_regex_traits_base<char> const&, unsigned long) in augmentation_tests.cpp.o
      boost::cpp_regex_traits<char>::get_catalog_name() in augmentation_tests.cpp.o
      boost::object_cache<boost::re_detail_107500::cpp_regex_traits_base<char>, boost::re_detail_107500::cpp_regex_traits_implementation<char> >::get(boost::re_detail_107500::cpp_regex_traits_base<char> const&, unsigned long) in dataloader_tests.cpp.o
      boost::cpp_regex_traits<char>::get_catalog_name() in dataloader_tests.cpp.o
  "boost::unit_test::lazy_ostream::inst", referenced from:
      boost::unit_test::lazy_ostream::instance() in augmentation_tests.cpp.o
      boost::unit_test::lazy_ostream::instance() in ffn_model_tests.cpp.o
      boost::unit_test::lazy_ostream::instance() in dataloader_tests.cpp.o
      boost::unit_test::lazy_ostream::instance() in preprocessor_tests.cpp.o
      boost::unit_test::lazy_ostream::instance() in utils_tests.cpp.o
  "boost::unit_test::unit_test_main(bool (*)(), int, char**)", referenced from:
      _main in dataloader_tests.cpp.o
  "boost::unit_test::unit_test_log_t::set_checkpoint(boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::basic_cstring<char const>)", referenced from:
      AugmentationTest::ResizeAugmentationTest_invoker() in augmentation_tests.cpp.o
      AugmentationTest::ResizeAugmentationTest::test_method() in augmentation_tests.cpp.o
      FFNModelsTests::DarknetModelTest_invoker() in ffn_model_tests.cpp.o
      FFNModelsTests::DarknetModelTest::test_method() in ffn_model_tests.cpp.o
      FFNModelsTests::YOLOV1ModelTest_invoker() in ffn_model_tests.cpp.o
      FFNModelsTests::YOLOV1ModelTest::test_method() in ffn_model_tests.cpp.o
      DataLoadersTest::CSVDataLoaderTest_invoker() in dataloader_tests.cpp.o
      ...
  "boost::unit_test::unit_test_log_t::instance()", referenced from:
      ___cxx_global_var_init in augmentation_tests.cpp.o
      ___cxx_global_var_init.44 in ffn_model_tests.cpp.o
      ___cxx_global_var_init.42 in dataloader_tests.cpp.o
      ___cxx_global_var_init.42 in preprocessor_tests.cpp.o
      ___cxx_global_var_init.40 in utils_tests.cpp.o
  "boost::unit_test::decorator::collector_t::instance()", referenced from:
      ___cxx_global_var_init.36 in augmentation_tests.cpp.o
      ___cxx_global_var_init.39 in augmentation_tests.cpp.o
      ___cxx_global_var_init.45 in ffn_model_tests.cpp.o
      ___cxx_global_var_init.48 in ffn_model_tests.cpp.o
      ___cxx_global_var_init.56 in ffn_model_tests.cpp.o
      ___cxx_global_var_init.43 in dataloader_tests.cpp.o
      ___cxx_global_var_init.46 in dataloader_tests.cpp.o
      ...
  "boost::unit_test::test_case::test_case(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::function<void ()> const&)", referenced from:
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in augmentation_tests.cpp.o
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in ffn_model_tests.cpp.o
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in dataloader_tests.cpp.o
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in preprocessor_tests.cpp.o
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in utils_tests.cpp.o
  "boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::decorator::collector_t&)", referenced from:
      ___cxx_global_var_init.36 in augmentation_tests.cpp.o
      ___cxx_global_var_init.45 in ffn_model_tests.cpp.o
      ___cxx_global_var_init.43 in dataloader_tests.cpp.o
      ___cxx_global_var_init.43 in preprocessor_tests.cpp.o
      ___cxx_global_var_init.41 in utils_tests.cpp.o
  "boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector_t&, unsigned long)", referenced from:
      ___cxx_global_var_init.39 in augmentation_tests.cpp.o
      ___cxx_global_var_init.48 in ffn_model_tests.cpp.o
      ___cxx_global_var_init.56 in ffn_model_tests.cpp.o
      ___cxx_global_var_init.46 in dataloader_tests.cpp.o
      ___cxx_global_var_init.68 in dataloader_tests.cpp.o
      ___cxx_global_var_init.91 in dataloader_tests.cpp.o
      ___cxx_global_var_init.143 in dataloader_tests.cpp.o
      ...
  "boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(int)", referenced from:
      ___cxx_global_var_init.50 in augmentation_tests.cpp.o
      ___cxx_global_var_init.60 in ffn_model_tests.cpp.o
      ___cxx_global_var_init.156 in dataloader_tests.cpp.o
      ___cxx_global_var_init.58 in preprocessor_tests.cpp.o
      ___cxx_global_var_init.88 in utils_tests.cpp.o
  "boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)", referenced from:
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in augmentation_tests.cpp.o
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in ffn_model_tests.cpp.o
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in dataloader_tests.cpp.o
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in preprocessor_tests.cpp.o
      boost::unit_test::make_test_case(boost::function<void ()> const&, boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long) in utils_tests.cpp.o
  "boost::filesystem::path::compare(boost::filesystem::path const&) const", referenced from:
      boost::filesystem::operator<(boost::filesystem::path const&, boost::filesystem::path const&) in dataloader_tests.cpp.o
  "boost::filesystem::path::filename() const", referenced from:
      Utils::ListDir(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::vector<boost::filesystem::path, std::__1::allocator<boost::filesystem::path> >&, bool)::'lambda'(boost::filesystem::path)::operator()(boost::filesystem::path) const in dataloader_tests.cpp.o
  "boost::filesystem::path::extension() const", referenced from:
      DataLoader<arma::Mat<double>, arma::Mat<double>, mlpack::data::MinMaxScaler>::LoadAllImagesFromDirectory(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, arma::Mat<double>&, arma::Mat<double>&, unsigned long, unsigned long, unsigned long, unsigned long) in dataloader_tests.cpp.o
  "boost::regex_error::raise() const", referenced from:
      boost::re_detail_107500::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail_107500::re_syntax_base*) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail_107500::re_syntax_base*) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmap(boost::re_detail_107500::re_syntax_base*, unsigned char*, unsigned int*, unsigned char) in augmentation_tests.cpp.o
      boost::re_detail_107500::basic_regex_parser<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fail(boost::regex_constants::error_type, long, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, long) in dataloader_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::fixup_recursions(boost::re_detail_107500::re_syntax_base*) in dataloader_tests.cpp.o
      boost::re_detail_107500::basic_regex_creator<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::create_startmaps(boost::re_detail_107500::re_syntax_base*) in dataloader_tests.cpp.o
      ...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [bin/models_test] Error 1
make[1]: *** [tests/CMakeFiles/models_test.dir/all] Error 2
make: *** [all] Error 2

Please help me figure out this error.

make showing error

I'm new to mlpack and trying to build and make the mlpack/models but I'm getting the following error.

(ml) rituraj@rituraj-G7-7588:~/models/build$ make
[ 16%] Linking CXX executable ../bin/models_test
CMakeFiles/models_test.dir/augmentation_tests.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':
augmentation_tests.cpp:(.text+0x1c31): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::decorator::collector&)'
augmentation_tests.cpp:(.text+0x1ca7): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
CMakeFiles/models_test.dir/augmentation_tests.cpp.o: In function `bool boost::regex_search<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, char, boost::regex_traits<char, boost::cpp_regex_traits<char> > >(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
augmentation_tests.cpp:(.text._ZN5boost12regex_searchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsESJ_[_ZN5boost12regex_searchIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISB_EEEcNS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEEbT_SJ_RNS_13match_resultsISJ_T0_EERKNS_11basic_regexIT1_T2_EENS_15regex_constants12_match_flagsESJ_]+0xba): undefined reference to `boost::re_detail_106501::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::find()'
CMakeFiles/models_test.dir/augmentation_tests.cpp.o: In function `boost::re_detail_106501::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::perl_matcher(__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, boost::match_results<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > > >&, boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags, __gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >)':
augmentation_tests.cpp:(.text._ZN5boost16re_detail_10650112perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC2ESC_SC_RNS_13match_resultsISC_SF_EERKNS_11basic_regexIcSJ_EENS_15regex_constants12_match_flagsESC_[_ZN5boost16re_detail_10650112perl_matcherIN9__gnu_cxx17__normal_iteratorIPKcNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEESaINS_9sub_matchISC_EEENS_12regex_traitsIcNS_16cpp_regex_traitsIcEEEEEC5ESC_SC_RNS_13match_resultsISC_SF_EERKNS_11basic_regexIcSJ_EENS_15regex_constants12_match_flagsESC_]+0x113): undefined reference to `boost::re_detail_106501::perl_matcher<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<boost::sub_match<__gnu_cxx::__normal_iterator<char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >, boost::regex_traits<char, boost::cpp_regex_traits<char> > >::construct_init(boost::basic_regex<char, boost::regex_traits<char, boost::cpp_regex_traits<char> > > const&, boost::regex_constants::_match_flags)'
CMakeFiles/models_test.dir/ffn_model_tests.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':
ffn_model_tests.cpp:(.text+0x3172): undefined reference to `boost::system::generic_category()'
ffn_model_tests.cpp:(.text+0x317e): undefined reference to `boost::system::generic_category()'
ffn_model_tests.cpp:(.text+0x318a): undefined reference to `boost::system::system_category()'
ffn_model_tests.cpp:(.text+0x33cd): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::decorator::collector&)'
ffn_model_tests.cpp:(.text+0x3443): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
ffn_model_tests.cpp:(.text+0x34c5): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
CMakeFiles/models_test.dir/ffn_model_tests.cpp.o: In function `boost::system::error_category::std_category::equivalent(int, std::error_condition const&) const':
ffn_model_tests.cpp:(.text._ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition[_ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition]+0xb8): undefined reference to `boost::system::generic_category()'
ffn_model_tests.cpp:(.text._ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition[_ZNK5boost6system14error_category12std_category10equivalentEiRKSt15error_condition]+0xf3): undefined reference to `boost::system::generic_category()'
CMakeFiles/models_test.dir/ffn_model_tests.cpp.o: In function `boost::system::error_category::std_category::equivalent(std::error_code const&, int) const':
ffn_model_tests.cpp:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0xb8): undefined reference to `boost::system::generic_category()'
ffn_model_tests.cpp:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0xf3): undefined reference to `boost::system::generic_category()'
ffn_model_tests.cpp:(.text._ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei[_ZNK5boost6system14error_category12std_category10equivalentERKSt10error_codei]+0x1d2): undefined reference to `boost::system::generic_category()'
CMakeFiles/models_test.dir/ffn_model_tests.cpp.o: In function `boost::asio::error::get_system_category()':
ffn_model_tests.cpp:(.text._ZN5boost4asio5error19get_system_categoryEv[_ZN5boost4asio5error19get_system_categoryEv]+0x5): undefined reference to `boost::system::system_category()'
CMakeFiles/models_test.dir/ffn_model_tests.cpp.o: In function `boost::serialization::singleton_module::is_locked()':
ffn_model_tests.cpp:(.text._ZN5boost13serialization16singleton_module9is_lockedEv[_ZN5boost13serialization16singleton_module9is_lockedEv]+0x5): undefined reference to `boost::serialization::singleton_module::get_lock()'
CMakeFiles/models_test.dir/dataloader_tests.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':
dataloader_tests.cpp:(.text+0xad06): undefined reference to `boost::system::generic_category()'
dataloader_tests.cpp:(.text+0xad12): undefined reference to `boost::system::generic_category()'
dataloader_tests.cpp:(.text+0xad1e): undefined reference to `boost::system::system_category()'
dataloader_tests.cpp:(.text+0xadae): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::decorator::collector&)'
dataloader_tests.cpp:(.text+0xae24): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
dataloader_tests.cpp:(.text+0xaea6): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
dataloader_tests.cpp:(.text+0xaf28): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
dataloader_tests.cpp:(.text+0xafaa): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
dataloader_tests.cpp:(.text+0xb02c): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
CMakeFiles/models_test.dir/dataloader_tests.cpp.o: In function `boost::system::error_code::error_code()':
dataloader_tests.cpp:(.text._ZN5boost6system10error_codeC2Ev[_ZN5boost6system10error_codeC5Ev]+0x17): undefined reference to `boost::system::system_category()'
CMakeFiles/models_test.dir/preprocessor_tests.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':
preprocessor_tests.cpp:(.text+0x32b6): undefined reference to `boost::system::generic_category()'
preprocessor_tests.cpp:(.text+0x32c2): undefined reference to `boost::system::generic_category()'
preprocessor_tests.cpp:(.text+0x32ce): undefined reference to `boost::system::system_category()'
preprocessor_tests.cpp:(.text+0x335e): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::decorator::collector&)'
preprocessor_tests.cpp:(.text+0x33d4): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
CMakeFiles/models_test.dir/utils_tests.cpp.o: In function `__static_initialization_and_destruction_0(int, int)':
utils_tests.cpp:(.text+0x5194): undefined reference to `boost::system::generic_category()'
utils_tests.cpp:(.text+0x51a0): undefined reference to `boost::system::generic_category()'
utils_tests.cpp:(.text+0x51ac): undefined reference to `boost::system::system_category()'
utils_tests.cpp:(.text+0x5396): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::basic_cstring<char const>, boost::unit_test::basic_cstring<char const>, unsigned long, boost::unit_test::decorator::collector&)'
utils_tests.cpp:(.text+0x540c): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
utils_tests.cpp:(.text+0x548e): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
utils_tests.cpp:(.text+0x5510): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
utils_tests.cpp:(.text+0x5592): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
utils_tests.cpp:(.text+0x5614): undefined reference to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)'
CMakeFiles/models_test.dir/utils_tests.cpp.o:utils_tests.cpp:(.text+0x5696): more undefined references to `boost::unit_test::ut_detail::auto_test_unit_registrar::auto_test_unit_registrar(boost::unit_test::test_case*, boost::unit_test::decorator::collector&, unsigned long)' follow
collect2: error: ld returned 1 exit status
tests/CMakeFiles/models_test.dir/build.make:205: recipe for target 'bin/models_test' failed
make[2]: *** [bin/models_test] Error 1
CMakeFiles/Makefile2:196: recipe for target 'tests/CMakeFiles/models_test.dir/all' failed
make[1]: *** [tests/CMakeFiles/models_test.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

input for RNN (LSTM) when using MEL-coefficients for speech recognition

Ok, so I have another question related to the input of the neural network. This time is about RNN (LSTM). I am trying to do some simple speech recognition using MEL-coefficients. I am trying to adapt the example of the stock prediction (https://github.com/mlpack/examples/blob/master/lstm_stock_prediction/lstm_stock_prediction.cpp) to my needs, but I am having problems figuring out how to properly set-up my 3D matrix.

Say that I have a matrix of size 2000x1000, where each row represents a different audio file (let's assume we have 10 words to recognize => 200 audio files per word) and each column represents a sample of a MEL-coefficient. Let's assume that I have 20 MEL-coefficients, each one comprising of 50 samples. So basically the first 50 samples represent the samples of the first MEL coefficient, the next 50 samples represent the samples of the second MEL coefficients, etc. The MEL coefficients are also organized in ascending order.

How do my 3D Train and Test matrix should look like, assuming (for instance), that I am using 10% of the words for validation?

Thank you for your help!!!
Alex.

input for add<Convolution> mlpack

I have two quick questions about the add and I cannot find the answer in the documentation. Say that I pass a vector to add of length 4130, which I have obtained from "flattening" a matrix 14x295. Just to clarify, when I say that I pass a vector, I mean that I have a csv file (same structure as in https://github.com/mlpack/examples/blob/master/mnist_cnn/mnist_cnn.cpp) with ~20000 different images all labeled. Each row is obviously a vector that has been flattened => 20000x4130.

I want my input to be 14x295, so my add will be something like this:

model.Add<Convolution<>>(1, // Number of input activation maps.
14, // Number of output activation maps.
3, // Filter width.
3, // Filter height.
1, // Stride along width.
1, // Stride along height.
0, // Padding width.
0, // Padding height.
196, // Input width.
14 // Input height.
);

Questions:

  1. My first question is about the matrix of data that Armadillo creates when I open the csv file. Armadillo saves the data in a 4130x20000 matrix, which means a transpose form of the original structure. So, do I need to transpose my matrix to have a 14x196 input? Or has the convolution been built knowing that Armadillo transposes the data? I am asking this question, because I need to know if the width has to be 196 or 14.

  2. Second question: how will add create my the 14x295 matrix? Assuming that my input will be a 20000x4130 matrix, my assumption is that the first 295 columns will be the elements of the first row, then the next 295 columns will be the elements of the second row, etc. until I have my 14x295 matrix. Is that correct?

Thank you!!!
Alex.

Improve description for the repository

image
So while searching the models repository on google and even when someone comes to take a look they see the description to understand what the repository is about and so after some talk we came up with a simple suggestion to change it to - "Models built with mlpack"

Let me know your suggestions and feel free to propose something else or vote on it if you like this one.

Implementing YOLOv4

Hey everyone, I will be working on implementing YOLOv4 in mlpack for a college project. I'm opening this issue to prevent conflicts incase someone also starts working on it.

Thanks.

Where to put convert class

I have implemented a Convert class as per the requirement of the issue
In which directory should we put this new code?
Link to my implementation.
Once decided I can make a PR accordingly.

run models

How can we run the models?
I want to run vae model but It's not specified how!

The YOLO architecture does not match what is mentioned in the YOLOv1 official paper.

I wanted to add a YOLO-based example to the repository. However, upon reviewing the implementation of the mlpack YOLO model, I noticed that its architecture does not match the official YOLO model architecture, as shown in the screenshot.

Screenshot from 2024-01-11 15-16-18
This is the official YOLO architecture, which does not match what has been implemented in the mlpack YOLO model.

Add convert function.

Recently we added support to parse XML files in object detection type datasets. It would nice to have a conversion script that convert CSV, object-detection-tf type, json to XML and vice-versa. A great example is roboflow.ai's convert feature.
Let me know if any clarification is needed.
Thanks.

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.