net = {
const run_duration = 5000000;
const net_size = 2;
const step_size = 1;
let weights = await tf.tensor2d([
[node0, 1],
[-1, node1]
]);
const taus = await tf.tensor1d([tau0, 1]);
const gains = await tf.tensor1d([1, 1.1], tf.int32);
const biases = await tf.tensor1d([-2.75, -1.75]);
let ext_inputs = await tf.tensor1d([0, 0]);
let states = await tf.tensor1d([2, 3]);
let outputs = await tf.tensor1d([0.2, 0.3]);
let loopcount = 1;
while (loopcount++ < run_duration) {
const calc = await tf.tidy(() => {
let total_inputs = weights.dot(outputs);
let biased_states = total_inputs.add(biases);
let gained_biased_states = biased_states.mul(gains);
let yprime = gained_biased_states.sub(states).div(taus);
let delta = yprime.mul(tf.scalar(step_size));
let trash = states;
states = states.add(delta);
trash.dispose();
outputs = tf.sigmoid(states.transpose());
return { states, outputs };
});
amon.log("loopcount: ", loopcount);
yield {
state: states,
count: loopcount,
weights: weights,
outputs: outputs,
inputs: ext_inputs
};
}
}