00001
00045
00046
00047 #ifndef MSERBFNET_H
00048 #define MSERBFNET_H
00049
00050 #include "ReClaM/RBFNet.h"
00051 #include "Array/Array.h"
00052
00053
00114 class MSERBFNet : public RBFNet
00115 {
00116
00117 public:
00118
00119
00146 MSERBFNet(unsigned numInput, unsigned numOutput, unsigned numHidden)
00147 : RBFNet(numInput, numOutput, numHidden)
00148 { }
00149
00150
00151
00176 MSERBFNet(const std::string &filename) : RBFNet(filename)
00177 {};
00178
00179
00180
00181
00182
00217 MSERBFNet(unsigned numInput, unsigned numOutput, unsigned numHidden,
00218 const Array<double> &_m,
00219 const Array<double> &_A,
00220 const Array<double> &_b,
00221 const Array<double> &_v)
00222 : RBFNet(numInput, numOutput, numHidden, _m, _A, _b, _v)
00223 {};
00224
00225
00226
00227
00228
00259 double error(Model& model, const Array< double >& input, const Array< double >& target)
00260 {
00261 Array<double> myParameter(model.getParameterDimension());
00262 for (int i = 0; i < model.getParameterDimension(); i++)
00263 {
00264 myParameter[i] = model.getParameter(i);
00265 }
00266 setParams(myParameter);
00267 return mse(input, target) / (double)outputDimension;
00268 }
00269
00270
00303 double errorDerivative(Model& model, const Array< double >& input, const Array< double >& target, Array<double> &derivative)
00304 {
00305 Array <double> myParameter(model.getParameterDimension());
00306 for (int i = 0;i < model.getParameterDimension();i++)
00307 {
00308 myParameter[i] = model.getParameter(i);
00309 }
00310
00311 setParams(myParameter);
00312
00313 double mse = gradientMSE(input, target, derivative) / (double)outputDimension;
00314 derivative /= (double)outputDimension;
00315 return mse;
00316 }
00317 };
00318
00319
00320 #endif
00321