UNPKG

2.24 kBJavaScriptView Raw
1/**
2 * Created by joonkukang on 2014. 1. 13..
3 */
4var math = require('./utils').math;
5LogisticRegression = require('./LogisticRegression');
6HiddenLayer = require('./HiddenLayer');
7RBM = require('./RBM');
8CRBM = require('./CRBM');
9DBN = require('./DBN');
10
11
12CDBN = 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 // 0 : nothing, 1 : info, 2: warn
25 };
26 // Constructing Deep Neural Network
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
72CDBN.prototype.__proto__ = DBN.prototype;
\No newline at end of file