Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

examples.h

Go to the documentation of this file.
00001 #ifndef E_T_H
00002 #define E_T_H
00003 
00004 #include <vector>
00005 #include "defines.h"
00006 #include "TrainingSet.h"
00007 
00008 namespace annie {
00009 
00013 typedef real (*TimeSeriesCreatingFunction)(unsigned time);
00014 
00018 typedef std::vector<real> SamplesContainer;
00019 
00020 
00024 void sampleFunction(TimeSeriesCreatingFunction f, unsigned from, unsigned to, SamplesContainer &out);
00025 
00031 class TrainingSet;
00032 TrainingSet *makeExamples(unsigned inputs, unsigned outputs, const SamplesContainer &samples, int from=0, int to=-1);
00033 
00034 
00037 typedef real (*SamplingFunction)();
00038 
00039 
00050 TrainingSet *randomSamples(uint samples, uint dim, SamplingFunction *samplingFunctions);
00051 
00053 TrainingSet *randomSamples(uint samples, uint dim, SamplingFunction samplingFunction);
00054 
00055 //TODO: somewhat outdated by TS functionalites ..
00059 TrainingSet *transformInputs(TrainingSet &source, XformFunction f, uint res_ins) throw();
00060 
00062 TrainingSet *transformInputs(TrainingSet &source, XformFunction f) throw();
00063 /*
00064  * is this version needed somewhere?
00065  * transform one TrainingSet to another on sample-by-sample basis
00066  * 
00067  * @param res_ins, res_outs specify the dimensions of output. If not specified, the same as source is assumed
00068  */
00069 //TrainingSet *transformExamples(const TrainingSet &source, XformFunction f, Xform.., uint res_ins=in.getInputCount(), uint res_outs=in.getInputCount());
00070 
00084 extern Vector toPolar(const Vector &in);
00085 extern Vector normalize(const Vector &in);
00086 extern Vector vectorIdentity(const Vector &in);
00087 
00092 template<int T_multiplier1000>
00093 static Vector Xscale(const Vector &in)  {
00094     return in * ((real)T_multiplier1000 / 1000);
00095 }
00096 
00097 template<int T_add1000>
00098 static Vector Xadd(const Vector &in)    {
00099     return in + ((real)T_add1000 / 1000);
00100 }
00101 
00106 TrainingSet *uniformCube(uint samples, uint dim);
00107 
00109 TrainingSet *uniformSphere(uint  samples, uint dim);
00110 
00114 struct Selector : TSTransformer {
00115     
00123     typedef std::vector<int> Selection;
00124     Selector(Selection ins, Selection outs) : TSTransformer(ins.size(), outs.size()), _ins(ins), _outs(outs)    {}  //TODO: check the bounds
00125     virtual void xform(const Vector &in1, const Vector &in1, Vector &out1, Vector &out2) const;
00126   protected:
00127     Selection _ins, _outs;
00128 };
00129 
00130 
00131 struct Shrinker : Selector  {
00132     Shrinker(uint inputs, uint outputs=0) : Selector(interval(0, inputs), interval(-1, -outputs - 1)) {}
00133   protected:
00139     static Selection interval(int from, int to) {
00140         Selection res;
00141         if(from < 0) {
00142             ASSERT(to <= 0 && from >= to);
00143             for(int i=from; i>to; i--) res.push_back(i);
00144         }   else    {
00145             ASSERT(from <= to);
00146             for(int i=from; i<to; i++) res.push_back(i);
00147         }
00148         return res;
00149     }
00150 
00151 };
00152 
00153 } //namespace annie
00154 #endif //_H

Generated on Fri Jun 18 13:18:10 2004 for Annie by doxygen 1.3.5