MCPcopy
hub / github.com/BrainJS/brain.js / nodeHandle

Function nodeHandle

browser.js:2092–2127  ·  view source on GitHub ↗
(layers, layerNumber, nodeKey)

Source from the content-addressed store, hash-verified

2090 var leakyReluAlpha = this.leakyReluAlpha;
2091 var needsVar = false;
2092 function nodeHandle(layers, layerNumber, nodeKey) {
2093 if (layerNumber === 0) {
2094 return typeof nodeKey === 'string' ? 'input[\'' + nodeKey + '\']' : 'input[' + nodeKey + ']';
2095 }
2096
2097 var layer = layers[layerNumber];
2098 var node = layer[nodeKey];
2099 var result = ['(', node.bias];
2100 for (var w in node.weights) {
2101 if (node.weights[w] < 0) {
2102 result.push(node.weights[w] + '*' + nodeHandle(layers, layerNumber - 1, w));
2103 } else {
2104 result.push('+' + node.weights[w] + '*' + nodeHandle(layers, layerNumber - 1, w));
2105 }
2106 }
2107 result.push(')');
2108
2109 switch (activation) {
2110 case 'sigmoid':
2111 return '1/(1+1/Math.exp(' + result.join('') + '))';
2112 case 'relu':
2113 {
2114 needsVar = true;
2115 return '((v=' + result.join('') + ')<0?0:v)';
2116 }
2117 case 'leaky-relu':
2118 {
2119 needsVar = true;
2120 return '((v=' + result.join('') + ')<0?0:' + leakyReluAlpha + '*v)';
2121 }
2122 case 'tanh':
2123 return 'Math.tanh(' + result.join('') + ')';
2124 default:
2125 throw new Error('unknown activation type ' + activation);
2126 }
2127 }
2128
2129 var layers = this.toJSON().layers;
2130 var layersAsMath = [];

Callers 3

browser.jsFile · 0.85
nodeHandleMethod · 0.85
toFunctionMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected