Giter Site home page Giter Site logo

cuda-cnn's Introduction

CUDA-CNN

Document

  1. The simple c version author is Eric
  2. Overlap Data Transfers in CUDA
  3. The sub-version use cudnn is tdx

Results

CNN accelerated by cuda.
The start-of-art result's of popular datasets

  1. Test on mnist and get 99.76%, after voting(99.82%) (best 99.79%)
  2. Test on cifar-10 and get 87% (best 89%)

Feature

  1. Use Dropout to train the NetWork
  2. Support checkpoint, the program will save the best test result and save the network weight in the file "Result/checkPoint.txt", If the program exit accidentally, you can continue the program form this checkpoint.
  3. Translate the data set of mnist, including scale, rotate, distortion, accordding to Best Practices for Convolutional Neural Networks Applied to Visual Document Analysis.
  4. The log will be saved in the file "Result/log.txt".
  5. In the convolutional layers, you can chose combine feature maps, according to notes on Convolutional Neural NetWorks.
  6. Support local connection layers.
  7. If you want the program run fast, you can set the "TEST_EPOCH" to be large.
  8. Support branchLayer and combineLayer, which is designed accordding to goolenet, the network structure is no logger an linear structure but Directed acycline graph.

Compile

Depend on opencv and cuda
You can compile the code on windows or linux.
###SDK include path(-I)

  • linux: /usr/local/cuda/samples/common/inc/ (For include file "helper_cuda"); /usr/local/include/opencv/ (Depend on situation)
  • windows: X:/Program Files (x86) /NVIDIA Corporation/CUDA Samples/v6.5/common/inc (For include file "helper_cuda"); X:/Program Files/opencv/vs2010/install/include (Depend on situation)

###Library search path(-L)

  • linux: /usr/local/lib/
  • windows: X:/Program Files/opencv/vs2010/install/x86/cv10/lib (Depend on situation)

###libraries(-l)

  • opencv_core
  • opencv_highgui
  • opencv_imgproc
  • opencv_imgcodecs (need for opencv3.0)
  • cublas
  • curand
  • cudadevrt

###GPU compute

  • capability 2.0

###CMake for Linux

  1. sudo apt-get install cmake libopencv-dev
  2. mkdir build
  3. cd build
  4. cmake ..
  5. make -j16
  6. cd ../mnist/
  7. sh get_mnist.sh
  8. cd ../cifar-10
  9. sh get_cifar10.sh
  10. cd ../
  11. ./build/CUDA-CNN 1 1

###Windows

  1. Install vs2010.
  2. Download and install opencv-2.4 or other higher versions
  3. Download and install cuda-5.0 or other higher versions
  4. When you create a new project using VS2010, You can find NVIDIA-CUDA project template, create a cuda-project.
  5. View-> Property Pages-> Configuration Properties-> CUDA C/C++ -> Device-> Code Generation-> compute_20,sm_20
  6. View-> Property Pages-> Configuration Properties-> CUDA C/C++ -> Common-> Generate Relocatable Device Code-> Yes(-rdc=true)
  7. View-> Property Pages-> Configuration Properties-> Linker-> Input-> Additional Dependencies-> libraries(-l)
  8. View-> Property Pages-> Configuration Properties-> VC++ Directories-> General-> Library search path(-L)
  9. View-> Property Pages-> Configuration Properties-> VC++ Directories-> General-> Include Directories(-I)

###Linux

  1. Install opencv and cuda
  2. Start the nsight from cuda
  3. Create an 'empty cuda' project and import the clone code
  4. Project->Proerties for add-> Build-> Settings->CUDA->Device linker mode: separate compilation
  5. Project->Proerties for add-> Build-> Settings->CUDA->Generate PTX code 2.0
  6. Project->Proerties for add-> Build-> Settings->CUDA->Generate GPU code 2.0
  7. Project->Proerties for add-> Build-> Settings->Tool Settings->NVCC Compiler->includes: +/usr/local/cuda/samples/common/inc/; + opencv sdk include path ;
  8. Project->Proerties for add-> Build-> Settings->Tool Settings->NVCC Linkers->Libraries: libraries(-l)
  9. Project->Proerties for add-> Build-> Settings->Tool Settings->NVCC Linkers->Libraries search path(-L): /usr/local/lib/

Config

  1. CIFAR10
  2. MNIST

Informations

cuda-cnn's People

Contributors

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