Commit 3d9148d1 authored by Francesco Gatti's avatar Francesco Gatti
Browse files


parent 743c2dbf
# tkDNN
tkDNN is a Deep Neural Network library built with cuDNN primitives specifically thought to work on NVIDIA TK1 board.<br>
The main scope is to do high performance inference on already trained models.
Currently supports the following layers:
* Dense, fully interconnected
* Activation (RELU, ELU, SIGMOID, TANH)
* Convolutional 2D
* Convolutional 3D
* Max and Average Pooling
* Flatten
* Data preprocessing
## Workflow
The recommended workflow follow these step:
* Build and train a model in Keras (on any PC)
* Export weights and bias
* Define the model on tkDNN
* Do inference (on TK1)
## Compile the library
Build with cmake
mkdir build
cd build
cmake ..
## Test
There is a ready to use example on *test* directory, to try it you must generate the weights with Keras
cd tests
And then execute the inference on build directory
cd build
this should output the same prediction as Keras.
## Simple example
Here is a example of the entire workflow on a simple model.
Using the following Keras model save it to a file
model = Sequential()
model.add(Reshape((20, 1), input_shape=(20)))
# save model"path/to/model.h5")
After the model is created the weights can be exported for tkDNN inference
python weights_exporter model.h5 dense --output=weights/path
the exporter take as arguments, in order:
* input model
* layer type ["dense", "conv2d", conv3d"]
* { layer type ["dense", "conv2d", conv3d"] for each layer to export }
* optional argument --output define path where export weights
Then we can create a c++ program to do inference on tk1
#include<tkdnn.h> //library include
//Network object
tkDNN::Network net;
//input dimension
tkDNN::dataDim_t dim(1, 20, 1, 1, 1);
//Dense layer
tkDNN::Dense d0(&net, dim, 256, "weights/path", "bias/path");
//here load the input data to CUDA
//value_type is an alias of "float"
value_type *data_d = [...]
//do inference
value_type *output_d = d0.infer(dim, data_d);
//dim will be updated with the output dimension
The result is finally stored on output_d in device memory.
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment