神经网络与深度学习(二又四分之三)cpp-二又二分之一的补充

来源:互联网 发布:淘宝达人cps 编辑:程序博客网 时间:2024/04/28 00:54

承接上文


本神经网络的讲解 请见 http://blog.csdn.net/mr_w1997/article/details/54973376


改变了 DataSet的归一函数 并且 删除了 Test_reget 函数

//DateSet.h//created by WK#ifndef DATASET_H#define DATASET_H#include <vector>#include <cfloat>using namespace std;//数据集class DataSet{private:intInputNum;intOutputNum;vector<double*>DataMap;double*Max;double*Mini;public:DataSet(int inputnum, int outputnum){this->InputNum=inputnum;this->OutputNum =outputnum;this->Max=NULL;this->Mini=NULL;}void AddRow(double *inputArray, double *outputArray){double *data = new double[this->InputNum + this->OutputNum];for (int i = 0; i<this->InputNum; ++i){data[i] = inputArray[i];}for (int i = 0; i<this->OutputNum; ++i){data[InputNum + i] = outputArray[i];}this->DataMap.push_back(data);}void Normaliz(){if (this->Max){delete this->Max;this->Max = NULL;}if (this->Mini){delete this->Mini;this->Mini = NULL;} this->Max = new double[this->InputNum + this->OutputNum];this->Mini = new double[this->InputNum + this->OutputNum];for (int i = 0; i < this->InputNum + this->OutputNum; ++i){double max = INT_MIN;double mini = DBL_MAX;for (int j = 0; j < DataMap.size(); ++j){max = (max > DataMap[j][i] ? max : DataMap[j][i]);mini = (mini < DataMap[j][i] ? mini : DataMap[j][i]);}if (max == mini)continue;for (int j = 0; j < DataMap.size(); ++j){DataMap[j][i] = (DataMap[j][i] - mini) / (max - mini);}Max[i] = max;Mini[i] = mini;}}double *GetMax(){return this->Max;}double *GetMini(){return this->Mini;}int GetInputNum(){return this->InputNum;}int GetOutputNum(){return this->OutputNum;}int GetRows(){return DataMap.size();}vector<double*> GetDataMap(){return DataMap;} };#endif // !DATASET_H


0 0