-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNARX.h
81 lines (56 loc) · 1.54 KB
/
NARX.h
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
/*
Copyright 2012 Eugen Hristev Licensed under the
Educational Community License, Version 2.0 (the "License"); you may
not use this file except in compliance with the License. You may
obtain a copy of the License at
http://www.osedu.org/licenses/ECL-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an "AS IS"
BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
or implied. See the License for the specific language governing
permissions and limitations under the License.
*/
#pragma once
#include <qthread.h>
#include "Unit.h"
#include "InputUnit.h"
#include "OutputUnit.h"
#include "EvaluationEngine.h"
#include "narx_util.h"
class NARX : public QThread
{
Q_OBJECT
protected:
int H;
int a;
int b;
int M;
int N;
int feedback, targets;
ARCH arch;
int hact;
Unit **hunits;
OutputUnit **output_units;
InputUnit **inputs;
InputUnit **feedbacks;
InputUnit **exogenous;
double **Y;
EvaluationEngine **ee;
EvaluationEngine **rw;
void trainEpoch(bool logging, int epo);
void _log(QString str);
void push_weights();
void run();
public:
NARX(ARCH arch, int H = 1, int hact = 2, int a = 0, int b = 0, int M = 0, int N = 1, int feedback = 0, int targets = 0);
~NARX(void);
void train(int epochs);
void test(int epo);
ARCH getArch();
void copy(NARX *n);
void sum(NARX *n);
void divide(int len);
signals:
void training_epoch_finished();
void log();
};