Giter Club home page Giter Club logo

simplesom-junkie's Introduction

SimpleSOM-junkie

High level Implementation Of Simple Self-Organzing Map (Kohonen Map)

follow by the instruction on the ai-junkie website : http://www.ai-junkie.com/ann/som/som1.html

This is the second task on ICCS internship program at TU-Chemnitz , Germany

by Theppasith Nisitsukcharoen

Third-year Computer Engineering student , Chulalongkorn University

Requirement

Desktop Side

  1. Windows 7 (According to serial transmission Library)
  2. SFML Library - Draw Visualization
  • SFML -Please Select 32-Bit - code:block set path to = C:\SFML-2.3
  1. CODE::BLOCK (IDE for C++/C) - Project files formatted for code:Block

Microcontroller Side

  1. Source-Code here SimpleSOM-MSP430
  2. MSP430F5529 Board (Texas instrument)
  3. Code Composer Studio (Texas instument modded version of Eclipse)

Setting it up

  • First, you have to clone this repo into your computer.
  • You can use SOURCETREE or any git clients you want to.
   $ cd path/to/your/workspace
   $ git clone https://github.com/Tutorgaming/SimpleSOM-junkie.git
  • Add "C:\SFML-2.3\bin" to WINDOWS PATH

  • Then Open the project file using Code::Block [Tutor-SOM.cbp]

  • Here you go :D

Workflow

  • Normally , the test dataset is set to "iris.data" which is located on root directory of the project file.
  • There are some flag to set before compiling
/*================================
   @FLAG
==================================*/
    int                 serial_flag     = 1; //Enable Serial
    int                 finished        = 0;
    int                 classy          = 0;
    int                 num             = 0;
    int                 plotty          = 0;
    
  • Also the Parameters for self organizing map network
/*================================
   @PARAMETERS
==================================*/
    unsigned const int  ROW             = 15;
    unsigned const int  COL             = 15;
    unsigned const int  MAX_ITERATION   = 250;
    double              MAX_radius      = max(ROW, COL)/2;
    const double        LEARNING_CONST  = 0.1;
    
  1. Program will count lines and elements of the dataset.
  2. After that, it imports dataset onto those vectors
  • vector <double> data
  • vector <double> real
  1. Next , create the self-organizing network with randomized weight
  2. User will prompt to press "ENTER" in order to start program
  3. Traning Process - Bring the dataset from vector <double> data one by one to train the network until the end of dataset
  4. Shuffle Dataset (vector <double> data)
  5. Do Training Process until reach the iteration round ( according to MAX_ITERATION )
  6. After training , Plot the dataset on the trained map ( to specify which region are the data )
  • Use plotter[Row][Col]
  1. Sending the trained Self-Organizing network to Microcontroller ( according to serial_flag )
  • Running Microcontroller is required
  • function " sentMapToMSP(); "
  1. Finally, the program will ask the input test vector ( its size depends on elements of dataset ) and send it to microcontroller
  2. The Result
  • Shown on the console (Desktop Side)
  • Blinking LED on microcontroller ( numbers depends on the class tag )

simplesom-junkie's People

Contributors

tutorgaming avatar

Watchers

James Cloos 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.