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
00059 TrainingSet *transformInputs(TrainingSet &source, XformFunction f, uint res_ins) throw();
00060
00062 TrainingSet *transformInputs(TrainingSet &source, XformFunction f) throw();
00063
00064
00065
00066
00067
00068
00069
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) {}
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 }
00154 #endif //_H