SHOGUN
3.2.1
首页
相关页面
模块
类
文件
文件列表
文件成员
全部
类
命名空间
文件
函数
变量
类型定义
枚举
枚举值
友元
宏定义
组
页
src
shogun
neuralnets
NeuralInputLayer.cpp
浏览该文件的文档.
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
机器学习工具包 - 项目文档