GPU-FNN realizes a zero-order TSK-type fuzzy neural network (FNN) on graphic processing units (GPU) to reduce training time.
The software platform used is the compute unified device architecture (CUDA) with C language.
This document explains the use of GPU-FNN. Detailed implementation techniques of the GPU-FNN can be found in the following paper:
C. F. Juang, T. C. Chen, and W. Y. Cheng, “Speedup of implementing fuzzy neural networks with high-dimensional inputs through parallel processing on graphic processing units,” IEEE Trans. Fuzzy Systems, vol.19, no.4, pp.717-728, August 2011.
For GPU implementation of interval type-2 neural fuzzy systems, please visit the following website to download the implementation source code
Table of Contents
=================
- Quick Start
- Installation and Data Format
- 'GPU-FNN' Usage
- Additional Information
Quick Start
===========
If you are new to GUDA, please visit the website as follows:
"http://developer.nvidia.com/category/zone/cuda-zone"
which provides all the necessary tools for running CUDA on different systems which includes
developer Drives, GPU Computing SDK, CUDA toolkit and Started Guide.
The Started Guide provides installation and verification in great details on Windows, Linux and Mac.
The CUDA Toolkit has all the development tools, libraries,
and documentation you need to create applications for the CUDA architecture, including:
-CUDA C/C++ Compiler
-GPU Debugging & Profiling Tools
-GPU-Accelerated Math Libraries
-GPU-Accelerated Performance Primitives
Installation and Data Format
============================
On windows systems, we run CUDA on Visual Studio 2008
What you require are:
1) Visual Studio 2008
2) CUDA SDK
3) CUDA Toolkit
Step 1: Add cuda.rules to your project
Step 2: Setup your BIN, INCLUDE, and LIB directories.
Final Step: Specify the CUDA Runtime and CUTIL32D Linkers
If everything has been properly setup, the "build" command should work.
Data format:
Each row contains an instance. For classification, <label> is an integer pair indicating the class label (multi-class is supported).
The sample classification data included in this package is 'DNA data set'. The DNA data set consists of 3,186 samples in which 2,000 samples are used for training and the left 1,186 samples are used for testing. This is a three-class classification problem.
Each sample consists of 180 attributes.
If a sample belongs to class one, it is represented by 1 0 0 following the attributes.
GPU-FNN Usage
============================
On Unix systems, type
'cd /home/username/NVIDIA_GPU_Computing_SDK/C/src/GPU-FNN/'
to change to target folder
and then compile GPU-FNN.cu by NVCC
'nvcc GPU-FNN.cu -o GPU-FNN -arch sm_13'
run the ouput file GPU-FNN
'./GPU-FNN'
**Explanations of the variables used in the C code:
_in_varl: Number of input variables (the maximum is 256) ( in the paper)
_out_varl: Number of output variables ( in the paper)
_over_par: The overlap parameter between two clusters ( in the paper)
_int_width: Initial width of the first cluster ( in the paper)
_eta: Learning rate of gradient descent ( in the paper)
_ite_num: Iteration number
_time: Training data, total sample number
_Test_time: Test data, total sample number
_max_c: Maximum number of clusters allowed
_threshold_value: the threshold for generating a new cluster (rule) ( in the paper)
fig1
fig2
fig3
fig4
fig5
fig6
“#define _Test_file_Combine”: When this line is enabled, the program reads a test file to test its training performance after training is completed. That is, training and test are in the same program.
Additional Information
======================
For any questions in implementing the GPU-FNN, please email
W. Y. Cheng: A0810xyz@hotmail.com
or T. C. Chen: vilinchen@gmail.com
For any comments, please e-mail
C. F. Juang, cfjuang@dragon.nchu.edu.tw