A light deep learning tools box by c++
Network Architecture
- Convolutional Neural Network
- Normal Neural Network
- Reccurent Neural Network with three mainstream varieties(LSTM, LSTM-peelhole, GRU)(deep arcitecture supported)
- bi-directional LSTM & GRU & RNN(deep arcitecture supported)
Nonlinearities
- ReLU
- Sigmoid
- tanh
Usage
- ANN
layers.push_back(new FullConnLayer(4, 8));
layers.push_back(new ReluLayer());
layers.push_back(new FullConnLayer(8, 32));
layers.push_back(new SigmoidLayer());
layers.push_back(new FullConnLayer(32, 3));
layers.push_back(new SigmoidLayer());
ANN<MeanSquareLossLayer> *ann = new ANN<MeanSquareLossLayer>();
ann->build_ann(layers);
ann->load_data(argv[1]);
ann->train();
- CNN
std::vector<Layer*> layers;
layers.push_back(new ConvLayer(1, 6, 5, 5, 24, 24));
layers.push_back(new SigmoidLayer());
layers.push_back(new PoolingLayer(6, 6, 2, 2, 12, 12));
layers.push_back(new ConvLayer(6, 6, 5, 5, 8, 8));
layers.push_back(new SigmoidLayer());
layers.push_back(new PoolingLayer(6, 6, 2, 2, 4, 4));
layers.push_back(new ConvLayer(6, 10, 2, 2, 3, 3));
layers.push_back(new SigmoidLayer());
layers.push_back(new FlatternLayer());
layers.push_back(new FullConnLayer(90, 32));
layers.push_back(new SigmoidLayer());
layers.push_back(new FullConnLayer(32, 4));
layers.push_back(new SigmoidLayer());
CNN<MeanSquareLossLayer> *cnn = new CNN<MeanSquareLossLayer>();
cnn->build_cnn(layers);
cnn->load_data(argv[1]);
cnn->train();
- RNN
3.1 singel layer
std::vector<Layer*> layers;
layers.push_back(new WordEmbeddingLayer(14));
layers.push_back(new RnnCell(8, 16));
layers.push_back(new SeqFullConnLayer(16, 4));
layers.push_back(new SeqActiveLayer());
ReccurentNet *rnet = new ReccurentNet(4);
rnet->_build_rnn(layers);
3.2 multi layers
std::vector<Layer*> layers;
layers.push_back(new WordEmbeddingLayer(14));
layers.push_back(new RnnCell(8, 8));
layers.push_back(new RnnCell(8, 16));
layers.push_back(new SeqFullConnLayer(16, 4));
layers.push_back(new SeqActiveLayer());
ReccurentNet *rnet = new ReccurentNet(4);
rnet->_build_rnn(layers);
std::vector<Layer*> layers;
layers.push_back(new WordEmbeddingLayer(14));
layers.push_back(new LstmCell(8, 8));
layers.push_back(new LstmCell(8, 16));
layers.push_back(new SeqFullConnLayer(16, 4));
layers.push_back(new SeqActiveLayer());
ReccurentNet *rnet = new ReccurentNet(4);
rnet->_build_rnn(layers);
3.3 different layers
std::vector<Layer*> layers;
layers.push_back(new WordEmbeddingLayer(14));
layers.push_back(new RnnCell(8, 8));
layers.push_back(new LstmCell(8, 16));
layers.push_back(new SeqFullConnLayer(16, 4));
layers.push_back(new SeqActiveLayer());
ReccurentNet *rnet = new ReccurentNet(4);
rnet->_build_rnn(layers);