From 9a8b77707c12bab9d64e92b19a8256ac5b1e252e Mon Sep 17 00:00:00 2001 From: mike Date: Sat, 16 Jul 2011 19:15:59 +0000 Subject: Column is almost done. git-svn-id: http://svn.xagasoft.com/misc/libneural/trunk@471 d8baa203-390c-0410-a584-dba4c0749223 --- src/column.cpp | 1 + src/column.h | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 84 insertions(+) diff --git a/src/column.cpp b/src/column.cpp index e69de29..10b010b 100644 --- a/src/column.cpp +++ b/src/column.cpp @@ -0,0 +1 @@ +#include "neural/column.h" diff --git a/src/column.h b/src/column.h index e69de29..17ba899 100644 --- a/src/column.h +++ b/src/column.h @@ -0,0 +1,83 @@ +#ifndef NEURAL_COLUMN_H +#define NEURAL_COLUMN_H + +#include "neural/container.h" + +namespace Neural +{ + template + class Column : public Container + { + public: + Column() + { + } + + virtual ~Column() + { + } + + virtual void finalize( int iNumInputs ) + { + iInputs = iNumInputs; + iWeights = 0; + iBiases = 0; + + int iNextInputs = iInputs; + for( typename Container::NodeList::iterator i = + Container::getNodeList().begin(); i; i++ ) + { + (*i)->finalize( iNextInputs ); + iNextInputs = (*i)->getNumOutputs(); + if( (i+1) ) + { + lBuffer.append( new sigtype[iNextInputs] ); + } + iWeights += (*i)->getNumWeights(); + iBiases += (*i)->getNumBiases(); + } + } + + virtual void process( sigtype *aInput, sigtype *aOutput ) + { + + sigtype *pInput, *pOutput; + int iOutputOffset = 0; + for( typename Container::NodeList::iterator i = + Container::getNodeList().begin(); i; i++ ) + { + (*i)->process( aInput, aOutput+iOutputOffset ); + iOutputOffset += (*i)->getNumOutputs(); + } + } + + virtual int getNumInputs() const + { + return iInputs; + } + + virtual int getNumOutputs() const + { + return Container::getNodeList().last()->getNumOutputs(); + } + + virtual int getNumWeights() const + { + return iWeights; + } + + virtual int getNumBiases() const + { + return iBiases; + } + + private: + int iInputs; + int iWeights; + int iBiases; + typedef Bu::List BufferList; + BufferList lBuffer; + }; +}; + +#endif -- cgit v1.2.3