function ComputeLayerValues(input){
var nodes = [];
var links = [];
for (let i=0; i<NN['weights'][0].length; i++){
var node = {'id': i, 'LayerNum': 0, 'NodeNum': i, 'value': input[i], 'valueScaled': 2*input[i]}
nodes.push(node)
}
var currentLayer = input
for (let l=0; l<NN['weights'].length; l++){
var weight = NN['weights'][l]
var bias = NN['bias'][l]
var nextLayer = bias
for (let i=0; i<weight.length; i++){
for (let j=0; j<weight[i].length; j++){
nextLayer[j] += weight[i][j]*currentLayer[i]
var link = {'source': l*100+i, 'target': (l+1)*100+j, 'weight': weight[i][j]}
links.push(link)
}
}
for (let k=0; k<nextLayer.length; k++){
var v = nextLayer[k]
if (l !== NN['weights'].length-1){
v = Math.tanh(nextLayer[k])
}
var node = {'id': (l+1)*100+k, 'LayerNum': l+1, 'NodeNum': k, 'value': v, 'valueScaled': Math.tanh(nextLayer[k])}
nodes.push(node)
nextLayer[k] = v
}
currentLayer = nextLayer
}
return {"nodes": nodes, "links": links};
}