From 3f046fddc386bb204f5cb672a3b833892c085ed5 Mon Sep 17 00:00:00 2001 From: sbosse Date: Mon, 21 Jul 2025 23:07:37 +0200 Subject: [PATCH] Mon 21 Jul 22:43:21 CEST 2025 --- js/ml/HiddenLayer.js | 59 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 js/ml/HiddenLayer.js diff --git a/js/ml/HiddenLayer.js b/js/ml/HiddenLayer.js new file mode 100644 index 0000000..59892c9 --- /dev/null +++ b/js/ml/HiddenLayer.js @@ -0,0 +1,59 @@ +/** + * Created by joonkukang on 2014. 1. 12.. + */ +var math = Require('ml/math'); +var HiddenLayer = module.exports = function (settings) { + var L = {} + var self = L; + self.input = settings['input']; + + if(typeof settings['W'] === 'undefined') { + var a = 1. / settings['n_in']; + settings['W'] = math.randMat(settings['n_in'],settings['n_out'],-a,a); + } + if(typeof settings['b'] === 'undefined') + settings['b'] = math.zeroVec(settings['n_out']); + if(typeof settings['activation'] === 'undefined') + settings['activation'] = math.sigmoid; + + self.W = settings['W']; + self.b = settings['b']; + self.activation = settings['activation']; + return L; +} + +HiddenLayer.code = { + output : function(L,input) { + var self = L; + if(typeof input !== 'undefined') + self.input = input; + + var linearOutput = math.addMatVec(math.mulMat(self.input,self.W),self.b); + return math.activateMat(linearOutput,self.activation); + }, + linearOutput : function(L,input) { // returns the value before activation. + var self = L; + if(typeof input !== 'undefined') + self.input = input; + + var linearOutput = math.addMatVec(math.mulMat(self.input,self.W),self.b); + return linearOutput; + }, + backPropagate : function (L,input) { // example+num * n_out matrix + var self = L; + if(typeof input === 'undefined') + throw new Error("No BackPropagation Input.") + + var linearOutput = math.mulMat(input, math.transpose(self.W)); + return linearOutput; + }, + sampleHgivenV : function(L,input) { + var self = L; + if(typeof input !== 'undefined') + self.input = input; + + var hMean = HiddenLayer.code.output(self); + var hSample = math.probToBinaryMat(hMean); + return hSample; + } +}