Giter VIP home page Giter VIP logo

abcdl's Introduction

abcdl

A c++ light Deep Learning framework for ABC, Include DNN, CNN and RNN.

DNN example

1. Configure layers

std::vector<abcdl::dnn::Layer*> layers;
layers.push_back(new abcdl::dnn::InputLayer(784));
layers.push_back(new abcdl::dnn::FullConnLayer(784, 30, new abcdl::framework::SigmoidActivateFunc()));
layers.push_back(new abcdl::dnn::OutputLayer(30, 10, new abcdl::framework::SigmoidActivateFunc(), new abcdl::framework::CrossEntropyCost()));

2. Initailize Network

abcdl::dnn::DNN dnn;
dnn.set_layers(layers);

3. Load training data

abcdl::utils::MnistHelper helper;

abcdl::algebra::Mat train_data;
helper.read_image("data/mnist/train-images-idx3-ubyte", &train_data, 60000);

abcdl::algebra::Mat train_label;
helper.read_vec_label("data/mnist/train-labels-idx1-ubyte", &train_label, 10000);

4. Train network

dnn.train(train_data, train_label);

5. Predict

abcdl::algebra::Mat result;
abcdl::algebra::Mat predict_data;
helper.read_image("data/mnist/t10k-images-idx3-ubyte", &predict_data, 1);
dnn.predict(result, predict_data);

6. Serialize model

const std::string path = "data/dnn.model";
dnn.write_model(path);

7. Deserialize model

dnn.load_model(path);

CNN example

1. Configure layers

std::vector<abcdl::cnn::Layer*> layers;
layers.push_back(new abcdl::cnn::InputLayer(28, 28));
layers.push_back(new abcdl::cnn::ConvolutionLayer(3, 1, 5, new abcdl::framework::SigmoidActivateFunc()));
layers.push_back(new abcdl::cnn::SubSamplingLayer(2, new abcdl::framework::MeanPooling()));
layers.push_back(new abcdl::cnn::ConvolutionLayer(3, 1, 5, new abcdl::framework::SigmoidActivateFunc()));
layers.push_back(new abcdl::cnn::OutputLayer(10, new abcdl::framework::SigmoidActivateFunc(), new abcdl::framework::CrossEntropyCost()));

2. initialize network

abcdl::cnn::CNN cnn;
cnn.set_layers(layers);

3. Load training data

abcdl::utils::MnistHelper helper;

abcdl::algebra::Mat train_data;
helper.read_image("data/mnist/train-images-idx3-ubyte", &train_data, 60000);

abcdl::algebra::Mat train_label;
helper.read_vec_label("data/mnist/train-labels-idx1-ubyte", &train_label, 10000);

4. Train network

cnn.train(train_data, train_label);

5. Predict

abcdl::algebra::Mat result;
abcdl::algebra::Mat predict_data;
helper.read_image("data/mnist/t10k-images-idx3-ubyte", &predict_data, 1);
cnn.predict(result, predict_data);

abcdl's People

Contributors

btbujiangjun avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  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.