File: DataSet.h

package info (click to toggle)
torch 2-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 5,488 kB
  • ctags: 3,217
  • sloc: cpp: 14,272; makefile: 201
file content (134 lines) | stat: -rw-r--r-- 3,670 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
// Copyright (C) 2002 Ronan Collobert (collober@iro.umontreal.ca)
//                
//
// This file is part of Torch. Release II.
// [The Ultimate Machine Learning Library]
//
// Torch is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// Torch is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Torch; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

#ifndef DATA_SET_INC
#define DATA_SET_INC

#include "Measurer.h"
#include "List.h"

namespace Torch {

/** Provides an interface to manipulate all kind of data.

    @author Ronan Collobert (collober@iro.umontreal.ca)
 */
class DataSet : public Object
{
  public:

    //--- internal ---
    int **subsets;
    int *n_examples_subsets;
    int n_subsets;
    //----------------

    // True if a subset of the examples is selected.
    bool select_examples;

    /** The indices of all selected examples.
        When #select_examples# is false, it contains
        the indices of all examples.
    */
    int *selected_examples;

    /** Index of the current example.
        Warning:
        \begin{itemize}
          \item don't forget to set it in #setRealExample()# !
          \item it's the \emph{real} index and not the index
                in the #selected_examples# table.
        \end{itemize}
    */
    int current_example;

    /// Targets size, for all examples.
    int n_targets;

    /// Pointer to the targets of the current example.
    void *targets;

    /// Input size, for all examples.
    int n_inputs;

    /// Pointer on the inputs of the current example.
    List *inputs;

    /** Number of examples in the dataset.
        If you're using #select_examples#, it's
        the number of selected examples.
    */
    int n_examples;
    
    /** Real number of examples in the dataset.
        It's the number of examples in memory.
        (= #n_examples# if #select_examples# is false)
    */
    int n_real_examples;

    //-----

    ///
    DataSet();

    /** Set #targets# and #inputs# to the targets and inputs
        of the example with the index #selected_examples[t]#.
    */
    void setExample(int t);

    /** Set #targets# and #inputs# to the targets and inputs
        of the example with the index #t#.
    */
    virtual void setRealExample(int t) = 0;

    /** Set a new subset.
        \begin{itemize}
          \item #subset_# (of size #n_examples_#) is a set
          of indices which define a subset of #data#.
          \item if a #pushSubset()# has been already called,
          the next #pushSubset()# defines a subset of the
          previous subset, and so on...
          \item this function set #select_examples# to #true#
          and set the read indices of the examples in
          #selected_examples#.
        \end{itemize}
    */
    void pushSubset(int *subset_, int n_examples_);

    /** Remove the last subset.
        \begin{itemize}
          \item recomputes "selected_examples".
          \item if it was the last subset, set #select_examples#
          to #false#.
        \end{itemize}
    */
    void popSubset();

    //-----

    virtual void init();
    virtual void reset();
    virtual ~DataSet();
};


}

#endif