PLearn 0.1
|
00001 // -*- C++ -*- 00002 00003 // VariableSelectionWithDirectedGradientDescent.h 00004 // Copyright (c) 1998-2002 Pascal Vincent 00005 // Copyright (C) 1999-2002 Yoshua Bengio and University of Montreal 00006 // Copyright (c) 2002 Jean-Sebastien Senecal, Xavier Saint-Mleux, Rejean Ducharme 00007 // 00008 // Redistribution and use in source and binary forms, with or without 00009 // modification, are permitted provided that the following conditions are met: 00010 // 00011 // 1. Redistributions of source code must retain the above copyright 00012 // notice, this list of conditions and the following disclaimer. 00013 // 00014 // 2. Redistributions in binary form must reproduce the above copyright 00015 // notice, this list of conditions and the following disclaimer in the 00016 // documentation and/or other materials provided with the distribution. 00017 // 00018 // 3. The name of the authors may not be used to endorse or promote 00019 // products derived from this software without specific prior written 00020 // permission. 00021 // 00022 // THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR 00023 // IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 00024 // OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN 00025 // NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 00026 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 00027 // TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 00028 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF 00029 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING 00030 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS 00031 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 00032 // 00033 // This file is part of the PLearn library. For more information on the PLearn 00034 // library, go to the PLearn Web site at www.plearn.org 00035 00036 00037 /* ************************************************************************************************************** 00038 * $Id: VariableSelectionWithDirectedGradientDescent.h, v 1.0 2004/07/19 10:00:00 Bengio/Kegl/Godbout * 00039 * This file is part of the PLearn library. * 00040 ************************************************************************************************************** */ 00041 00042 00043 #ifndef VariableSelectionWithDirectedGradientDescent_INC 00044 #define VariableSelectionWithDirectedGradientDescent_INC 00045 00046 #include <plearn_learners/generic/PLearner.h> 00047 00048 namespace PLearn { 00049 using namespace std; 00050 00051 class VariableSelectionWithDirectedGradientDescent: public PLearner 00052 { 00053 typedef PLearner inherited; 00054 private: 00055 int inputsize; // input size of train set 00056 int targetsize; // output size of train set 00057 int weightsize; // weightsize size of train set 00058 int length; // number of samples in train set 00059 int width; // number of columns in train set 00060 00061 real learning_rate; 00062 Mat input_weights; 00063 TVec<bool> weights_selected; 00064 TVec<int> selected_variables; 00065 00066 PP<ProgressBar> pb; 00067 int row; 00068 int col; 00069 Vec sample_input; 00070 Vec sample_target; 00071 real sample_weight; 00072 Vec sample_output; 00073 Vec sample_cost; 00074 Vec train_criterion; 00075 real n7_value; 00076 real n8_value; 00077 real n9_value; 00078 real n10_value; 00079 real n10_gradient; 00080 real n9_gradient; 00081 real n8_gradient; 00082 real n7_gradient; 00083 Mat weights_gradient; 00084 int weights_gradient_max_col; 00085 real weights_gradient_max; 00087 Vec sum_of_abs_gradient; 00088 00089 00090 public: 00091 00093 VariableSelectionWithDirectedGradientDescent(); 00094 00095 PLEARN_DECLARE_OBJECT(VariableSelectionWithDirectedGradientDescent); 00096 00097 virtual void makeDeepCopyFromShallowCopy(CopiesMap &copies); 00098 virtual void build(); 00099 virtual void train(); 00100 virtual void forget(); 00101 virtual int outputsize() const; 00102 virtual TVec<string> getTrainCostNames() const; 00103 virtual TVec<string> getTestCostNames() const; 00104 virtual void computeOutput(const Vec& input, Vec& output) const; 00105 virtual void computeCostsFromOutputs(const Vec& input, const Vec& output, const Vec& target, Vec& costs) const; 00107 virtual void setTrainingSet(VMat training_set, bool call_forget=true); 00108 00109 00110 protected: 00111 00112 static void declareOptions(OptionList& ol); 00113 00114 private: 00115 void build_(); 00116 void verbose(string the_msg, int the_level); 00117 }; 00118 00119 DECLARE_OBJECT_PTR(VariableSelectionWithDirectedGradientDescent); 00120 00121 } // end of namespace PLearn 00122 00123 #endif 00124 00125 00126 /* 00127 Local Variables: 00128 mode:c++ 00129 c-basic-offset:4 00130 c-file-style:"stroustrup" 00131 c-file-offsets:((innamespace . 0)(inline-open . 0)) 00132 indent-tabs-mode:nil 00133 fill-column:79 00134 End: 00135 */ 00136 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:encoding=utf-8:textwidth=79 :