OpenANN  1.1.0
An open source library for artificial neural networks.
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
DataSetView.h
Go to the documentation of this file.
1 #ifndef OPENANN_IO_DATA_SET_VIEW_H_
2 #define OPENANN_IO_DATA_SET_VIEW_H_
3 
4 #include <Eigen/Core>
5 #include <vector>
6 #include <OpenANN/io/DataSet.h>
7 
8 namespace OpenANN
9 {
10 
11 class Learner;
12 
13 
25 class DataSetView : public DataSet
26 {
27 public:
33  DataSetView(const DataSetView& dataset);
34 
40  DataSetView(DataSet& dataset) : dataset(&dataset)
41  {}
42 
51  template<typename InputIt>
52  DataSetView(DataSet& dataset, InputIt index_begin, InputIt index_end)
53  : indices(index_begin, index_end), dataset(&dataset)
54  {}
55 
59  virtual ~DataSetView() {}
60 
64  virtual int samples();
65 
69  virtual int inputs();
70 
74  virtual int outputs();
75 
79  virtual Eigen::VectorXd& getInstance(int i);
80 
84  virtual Eigen::VectorXd& getTarget(int i);
85 
89  virtual void finishIteration(Learner& learner);
90 
96  virtual DataSetView& shuffle();
97 
98 private:
100  std::vector<int> indices;
101 
103  DataSet* dataset;
104 
106  friend void merge(DataSetView& merging, std::vector<DataSetView>& groups);
107 };
108 
119 void split(std::vector<DataSetView>& groups, DataSet& dataset,
120  int numberOfGroups, bool shuffling = true);
121 
122 
135 void split(std::vector<DataSetView>& groups, DataSet& dataset,
136  double ratio = 0.5, bool shuffling = true);
137 
146 void merge(DataSetView& merging, std::vector<DataSetView>& groups);
147 
157 DataSetView sample(DataSet& dataSet, double fraction, bool replacement);
158 
159 } // namespace OpenANN
160 
161 #endif // OPENANN_IO_DATA_SET_VIEW_H_