SHOGUN  4.1.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
NeuralLayer.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014, Shogun Toolbox Foundation
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7 
8  * 1. Redistributions of source code must retain the above copyright notice,
9  * this list of conditions and the following disclaimer.
10  *
11  * 2. Redistributions in binary form must reproduce the above copyright notice,
12  * this list of conditions and the following disclaimer in the documentation
13  * and/or other materials provided with the distribution.
14  *
15  * 3. Neither the name of the copyright holder nor the names of its
16  * contributors may be used to endorse or promote products derived from this
17  * software without specific prior written permission.
18 
19  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
20  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22  * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
23  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
24  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
25  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
26  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
27  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
28  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
29  * POSSIBILITY OF SUCH DAMAGE.
30  *
31  * Written (W) 2014 Khaled Nasr
32  */
33 
34 #ifndef __NEURALLAYER_H__
35 #define __NEURALLAYER_H__
36 
37 #include <shogun/lib/common.h>
38 #include <shogun/base/SGObject.h>
39 #include <shogun/lib/SGMatrix.h>
40 #include <shogun/lib/SGVector.h>
42 
43 namespace shogun
44 {
45 
50 {
57 };
58 
59 template <class T> class SGVector;
60 
87 class CNeuralLayer : public CSGObject
88 {
89 public:
91  CNeuralLayer();
92 
97  CNeuralLayer(int32_t num_neurons);
98 
99  virtual ~CNeuralLayer();
100 
109  virtual void initialize_neural_layer(CDynamicObjectArray* layers,
110  SGVector<int32_t> input_indices);
111 
119  virtual void set_batch_size(int32_t batch_size);
120 
127  virtual bool is_input() { return false; }
128 
144  SGVector<bool> parameter_regularizable,
145  float64_t sigma) { }
146 
153  virtual void compute_activations(SGMatrix<float64_t> inputs) { }
154 
164  virtual void compute_activations(SGVector<float64_t> parameters,
165  CDynamicObjectArray* layers) { }
166 
195  virtual void compute_gradients(SGVector<float64_t> parameters,
196  SGMatrix<float64_t> targets,
197  CDynamicObjectArray* layers,
198  SGVector<float64_t> parameter_gradients) { }
199 
206  virtual float64_t compute_error(SGMatrix<float64_t> targets) { return 0; }
207 
216  virtual void enforce_max_norm(SGVector<float64_t> parameters,
217  float64_t max_norm) { }
218 
227  virtual void dropout_activations();
228 
243  {
244  return 0.0;
245  }
246 
251  virtual int32_t get_num_neurons() { return m_num_neurons; }
252 
258  virtual int32_t get_width() { return m_width; }
259 
265  virtual int32_t get_height() { return m_height; }
266 
271  virtual void set_num_neurons(int32_t num_neurons)
272  {
273  m_num_neurons = num_neurons;
275  }
276 
281  virtual int32_t get_num_parameters() { return m_num_parameters; }
282 
288 
295  {
296  return m_activation_gradients;
297  }
298 
305  {
306  return m_local_gradients;
307  }
308 
314 
315  virtual const char* get_name() const { return "NeuralLayer"; }
316 
317 private:
318  void init();
319 
320 public:
325 
328 
339 
344 
345 protected:
347  int32_t m_num_neurons;
348 
352  int32_t m_width;
353 
357  int32_t m_height;
358 
361 
364 
369 
371  int32_t m_batch_size;
372 
377 
382 
388 
394 };
395 
396 }
397 #endif
virtual float64_t compute_error(SGMatrix< float64_t > targets)
Definition: NeuralLayer.h:206
SGVector< int32_t > m_input_sizes
Definition: NeuralLayer.h:368
virtual int32_t get_num_parameters()
Definition: NeuralLayer.h:281
virtual void compute_gradients(SGVector< float64_t > parameters, SGMatrix< float64_t > targets, CDynamicObjectArray *layers, SGVector< float64_t > parameter_gradients)
Definition: NeuralLayer.h:195
virtual SGMatrix< float64_t > get_activation_gradients()
Definition: NeuralLayer.h:294
SGMatrix< float64_t > m_activations
Definition: NeuralLayer.h:376
virtual void initialize_neural_layer(CDynamicObjectArray *layers, SGVector< int32_t > input_indices)
Definition: NeuralLayer.cpp:61
virtual int32_t get_num_neurons()
Definition: NeuralLayer.h:251
SGVector< int32_t > m_input_indices
Definition: NeuralLayer.h:363
Base class for neural network layers.
Definition: NeuralLayer.h:87
virtual void enforce_max_norm(SGVector< float64_t > parameters, float64_t max_norm)
Definition: NeuralLayer.h:216
SGMatrix< float64_t > m_activation_gradients
Definition: NeuralLayer.h:381
virtual SGMatrix< float64_t > get_activations()
Definition: NeuralLayer.h:287
SGMatrix< float64_t > m_local_gradients
Definition: NeuralLayer.h:387
virtual const char * get_name() const
Definition: NeuralLayer.h:315
virtual void set_num_neurons(int32_t num_neurons)
Definition: NeuralLayer.h:271
virtual int32_t get_height()
Definition: NeuralLayer.h:265
virtual SGMatrix< float64_t > get_local_gradients()
Definition: NeuralLayer.h:304
virtual void initialize_parameters(SGVector< float64_t > parameters, SGVector< bool > parameter_regularizable, float64_t sigma)
Definition: NeuralLayer.h:143
Class SGObject is the base class of all shogun objects.
Definition: SGObject.h:112
virtual float64_t compute_contraction_term(SGVector< float64_t > parameters)
Definition: NeuralLayer.h:242
ENLAutoencoderPosition
Definition: NeuralLayer.h:49
ENLAutoencoderPosition autoencoder_position
Definition: NeuralLayer.h:343
double float64_t
Definition: common.h:50
virtual void compute_activations(SGVector< float64_t > parameters, CDynamicObjectArray *layers)
Definition: NeuralLayer.h:164
Dynamic array class for CSGObject pointers that creates an array that can be used like a list or an a...
virtual void dropout_activations()
Definition: NeuralLayer.cpp:90
virtual int32_t get_width()
Definition: NeuralLayer.h:258
virtual SGVector< int32_t > get_input_indices()
Definition: NeuralLayer.h:313
all of classes and functions are contained in the shogun namespace
Definition: class_list.h:18
float64_t dropout_prop
Definition: NeuralLayer.h:327
virtual void set_batch_size(int32_t batch_size)
Definition: NeuralLayer.cpp:75
virtual void compute_activations(SGMatrix< float64_t > inputs)
Definition: NeuralLayer.h:153
virtual bool is_input()
Definition: NeuralLayer.h:127
SGMatrix< bool > m_dropout_mask
Definition: NeuralLayer.h:393
float64_t contraction_coefficient
Definition: NeuralLayer.h:338

SHOGUN Machine Learning Toolbox - Documentation