rlab
Version:
Javascript scientific library like R
66 lines (60 loc) • 2.01 kB
JavaScript
/**
* Created by joonkukang on 2014. 1. 13..
*/
var NN = R.NN;
CDBN = module.exports = function (settings) {
var self = this;
self.x = settings['input'];
self.y = settings['label'];
self.sigmoidLayers = [];
self.rbmLayers = [];
self.nLayers = settings['hiddenLayerSizes'].length;
self.hiddenLayerSizes = settings['hiddenLayerSizes'];
self.nIns = settings['nIns'];
self.nOuts = settings['nOuts'];
self.settings = {
'log level' : 1 // 0 : nothing, 1 : info, 2: warn
};
// Constructing Deep Neural Network
var i;
for(i=0 ; i<self.nLayers ; i++) {
var inputSize, layerInput;
if(i == 0)
inputSize = settings['nIns'];
else
inputSize = settings['hiddenLayerSizes'][i-1];
if(i == 0)
layerInput = self.x;
else
layerInput = self.sigmoidLayers[self.sigmoidLayers.length-1].sampleHgivenV();
var sigmoidLayer = new NN.HiddenLayer({
input : layerInput,
nIn : inputSize,
nOut : settings['hiddenLayerSizes'][i],
activation : NN.sigmoid
});
self.sigmoidLayers.push(sigmoidLayer);
var rbmLayer;
if(i==0) {
rbmLayer = new NN.CRBM({
input : layerInput,
nVisible : inputSize,
nHidden : settings['hiddenLayerSizes'][i],
});
} else {
rbmLayer = new NN.RBM({
input : layerInput,
nVisible: inputSize,
nHidden : settings['hiddenLayerSizes'][i]
});
}
self.rbmLayers.push(rbmLayer);
}
self.outputLayer = new NN.HiddenLayer({
input: self.sigmoidLayers[self.sigmoidLayers.length-1].sampleHgivenV(),
nIn : settings['hiddenLayerSizes'][settings['hiddenLayerSizes'].length - 1],
nOut : settings['nOuts'],
activation : NN.sigmoid
});
};
CDBN.prototype.__proto__ = DBN.prototype;