SHOGUN
3.2.1
Main Page
Related Pages
Modules
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Groups
Pages
src
shogun
neuralnets
NeuralInputLayer.cpp
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
#include <
shogun/neuralnets/NeuralInputLayer.h
>
35
36
using namespace
shogun;
37
38
CNeuralInputLayer::CNeuralInputLayer
() :
CNeuralLayer
()
39
{
40
init();
41
}
42
43
CNeuralInputLayer::CNeuralInputLayer
(int32_t num_neurons, int32_t start_index):
44
CNeuralLayer
(num_neurons)
45
{
46
init();
47
m_start_index
= start_index;
48
}
49
50
void
CNeuralInputLayer::compute_activations
(
SGMatrix< float64_t >
inputs)
51
{
52
if
(
m_start_index
== 0)
53
{
54
memcpy(
m_activations
.
matrix
, inputs.
matrix
,
55
m_num_neurons
*
m_batch_size
*
sizeof
(
float64_t
));
56
}
57
else
58
{
59
for
(int32_t i=0; i<
m_num_neurons
; i++)
60
for
(int32_t j=0; j<
m_batch_size
; j++)
61
m_activations
(i,j) = inputs(
m_start_index
+i, j);
62
}
63
if
(
gaussian_noise
> 0)
64
{
65
int32_t len =
m_num_neurons
*
m_batch_size
;
66
for
(int32_t k=0; k<len; k++)
67
m_activations
[k] +=
CMath::normal_random
(0.0,
gaussian_noise
);
68
}
69
}
70
71
void
CNeuralInputLayer::init()
72
{
73
m_start_index
= 0;
74
gaussian_noise
= 0;
75
SG_ADD
(&
m_start_index
,
"start_index"
,
76
"Start Index"
,
MS_NOT_AVAILABLE
);
77
SG_ADD
(&
gaussian_noise
,
"gaussian_noise"
,
78
"Gaussian Noise Standard Deviation"
,
MS_NOT_AVAILABLE
);
79
}
shogun::CNeuralInputLayer::gaussian_noise
float64_t gaussian_noise
Definition:
NeuralInputLayer.h:95
shogun::SGMatrix::matrix
T * matrix
Definition:
SGMatrix.h:296
NeuralInputLayer.h
shogun::CMath::normal_random
static float32_t normal_random(float32_t mean, float32_t std_dev)
Definition:
Math.h:655
shogun::CNeuralLayer::m_activations
SGMatrix< float64_t > m_activations
Definition:
NeuralLayer.h:317
shogun::CNeuralLayer
Base class for neural network layers.
Definition:
NeuralLayer.h:73
shogun::MS_NOT_AVAILABLE
Definition:
SGObject.h:75
float64_t
double float64_t
Definition:
common.h:50
shogun::CNeuralInputLayer::m_start_index
int32_t m_start_index
Definition:
NeuralInputLayer.h:102
shogun::CNeuralInputLayer::CNeuralInputLayer
CNeuralInputLayer()
Definition:
NeuralInputLayer.cpp:38
shogun::SGMatrix< float64_t >
shogun::CNeuralLayer::m_batch_size
int32_t m_batch_size
Definition:
NeuralLayer.h:312
shogun::CNeuralInputLayer::compute_activations
virtual void compute_activations(SGMatrix< float64_t > inputs)
Definition:
NeuralInputLayer.cpp:50
shogun::CNeuralLayer::m_num_neurons
int32_t m_num_neurons
Definition:
NeuralLayer.h:298
SG_ADD
#define SG_ADD(...)
Definition:
SGObject.h:67
SHOGUN
Machine Learning Toolbox - Documentation