1 |
|
2 |
|
3 |
|
4 | var math = require('./utils').math;
|
5 | LogisticRegression = require('./LogisticRegression');
|
6 | HiddenLayer = require('./HiddenLayer');
|
7 | RBM = require('./RBM');
|
8 | CRBM = require('./CRBM');
|
9 | DBN = require('./DBN');
|
10 |
|
11 |
|
12 | CDBN = module.exports = function (settings) {
|
13 | var self = this;
|
14 | self.x = settings['input'];
|
15 | self.y = settings['label'];
|
16 | self.sigmoidLayers = [];
|
17 | self.rbmLayers = [];
|
18 | self.nLayers = settings['hidden_layer_sizes'].length;
|
19 | self.hiddenLayerSizes = settings['hidden_layer_sizes'];
|
20 | self.nIns = settings['n_ins'];
|
21 | self.nOuts = settings['n_outs'];
|
22 |
|
23 | self.settings = {
|
24 | 'log level' : 1
|
25 | };
|
26 |
|
27 | var i;
|
28 | for(i=0 ; i<self.nLayers ; i++) {
|
29 | var inputSize, layerInput;
|
30 | if(i == 0)
|
31 | inputSize = settings['n_ins'];
|
32 | else
|
33 | inputSize = settings['hidden_layer_sizes'][i-1];
|
34 |
|
35 | if(i == 0)
|
36 | layerInput = self.x;
|
37 | else
|
38 | layerInput = self.sigmoidLayers[self.sigmoidLayers.length-1].sampleHgivenV();
|
39 |
|
40 | var sigmoidLayer = new HiddenLayer({
|
41 | 'input' : layerInput,
|
42 | 'n_in' : inputSize,
|
43 | 'n_out' : settings['hidden_layer_sizes'][i],
|
44 | 'activation' : math.sigmoid
|
45 | });
|
46 | self.sigmoidLayers.push(sigmoidLayer);
|
47 |
|
48 | var rbmLayer;
|
49 | if(i==0) {
|
50 | rbmLayer = new CRBM({
|
51 | 'input' : layerInput,
|
52 | 'n_visible' : inputSize,
|
53 | 'n_hidden' : settings['hidden_layer_sizes'][i],
|
54 | });
|
55 | } else {
|
56 | rbmLayer = new RBM({
|
57 | 'input' : layerInput,
|
58 | 'n_visible' : inputSize,
|
59 | 'n_hidden' : settings['hidden_layer_sizes'][i]
|
60 | });
|
61 | }
|
62 | self.rbmLayers.push(rbmLayer);
|
63 | }
|
64 | self.outputLayer = new HiddenLayer({
|
65 | 'input' : self.sigmoidLayers[self.sigmoidLayers.length-1].sampleHgivenV(),
|
66 | 'n_in' : settings['hidden_layer_sizes'][settings['hidden_layer_sizes'].length - 1],
|
67 | 'n_out' : settings['n_outs'],
|
68 | 'activation' : math.sigmoid
|
69 | });
|
70 | };
|
71 |
|
72 | CDBN.prototype.__proto__ = DBN.prototype; |
\ | No newline at end of file |