How to use the numjs.add function in numjs

To help you get started, we’ve selected a few numjs examples, based on popular ways it is used in public projects.

Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.

github grimmer0125 / alphago-zero-tictactoe-js / src / MCTS.js View on Github external
const v = resp.v;// .get(0);

      const valids = this.game.getValidMoves(canonicalBoard, 1);
      // NOTE: : Array multiplication is not matrix multiplication:
      // Python: self.Ps[s] = self.Ps[s]*valids
      this.Ps[s] = nj.multiply(this.Ps[s], valids); // # masking invalid moves
      const sum_Ps_s = nj.sum(this.Ps[s]);
      if (sum_Ps_s > 0) {
        this.Ps[s] = nj.divide(this.Ps[s], sum_Ps_s); // renormalize
      } else {
        // # if all valid moves were masked make all valid moves equally probable
        //
        // # NB! All valid moves may be masked if either your NNet architecture is insufficient or you've get overfitting or something else.
        // # If you have got dozens or hundreds of these messages you should pay attention to your NNet and/or training process.
        console.log('All valid moves were masked, do workaround.');
        this.Ps[s] = nj.add(this.Ps[s], valids);
        this.Ps[s] = nj.divide(this.Ps[s], nj.sum(this.Ps[s]));
      }

      this.Vs[s] = valids;
      this.Ns[s] = 0;
      return v;
    }

    const valids = this.Vs[s];
    let cur_best = Number.NEGATIVE_INFINITY;
    let best_act = -1;
    const aSize = this.game.getActionSize();
    // # pick the action with the highest upper confidence bound
    for (let a = 0; a < aSize; a++) {
      // NOTE: valid is a ndarray
      if (valids.get(a) > 0) {
github MindExMachina / smartgeometry / services / sketch-rnn / lib / sketch_rnn.js View on Github external
var reverse_sequence = [];
        var i;
        var s;
        var N = sequence.length;
        for (i = 0; i < N; i++) {
            s = [sequence[i][0] / scale_factor, sequence[i][1] / scale_factor, sequence[i][2], sequence[i][3], sequence[i][4]];
            forward_sequence.push(s);
        }
        for (i = N - 1; i >= 0; i--) {
            s = [forward_sequence[i][0], forward_sequence[i][1], forward_sequence[i][2], forward_sequence[i][3], forward_sequence[i][4]];
            reverse_sequence.push(s);
        }
        var output_fw = enc_fw_lstm.encode(forward_sequence);
        var output_bw = enc_bw_lstm.encode(reverse_sequence);
        var output = nj.concatenate([output_fw, output_bw]);
        var mu = nj.add(nj.dot(output, enc_mu_w), enc_mu_b);
        // optimization:
        if (temp > 0) {
            var presig = nj.add(nj.dot(output, enc_sigma_w), enc_sigma_b);
            var sigma = nj.sqrt(nj.exp(presig));
            var eps = nj.multiply(nj.array(random_normal_vector(), 'float32'), temp);
            var z = nj.add(mu, nj.multiply(eps, sigma));
        } else {
            var z = mu;
        }
        return z.tolist();
    };
github MindExMachina / smartgeometry / services / sketch-rnn / lib / sketch_rnn.js View on Github external
console.log("error, the argument passed into decode must be a Javascript normal Array type.");
            y = Array.prototype.slice.call(y);
        };

        var temp = 0.01;
        if (typeof(temperature) === "number") {
            temp = temperature;
        }
        var softmax_temp = 0.5 + temp * 0.5;
        if (typeof(softmax_temperature) === "number") {
            softmax_temp = softmax_temperature;
        }

        var z = nj.array(y);

        var init_state = nj.tanh(nj.add(nj.dot(z, enc_w), enc_b));

        var c = init_state.slice([0, dec_num_units]).clone();
        var h = init_state.slice([dec_num_units, 2 * dec_num_units]).clone();

        var rnn_state;
        var dx, dy, pen_down, pen_up, pen_end;
        var pdf;
        var x = nj.array([0, 0, 0, 0, 0]);
        var result = [];
        var lstm_input;

        for (var i = 0; i < max_seq_len; i++) {
            lstm_input = nj.concatenate([x, z]);
            rnn_state = dec_lstm.forward(lstm_input, h, c);
            pdf = get_pdf(rnn_state);
            [dx, dy, pen_down, pen_up, pen_end] = sample(pdf, temp, softmax_temp);
github MindExMachina / smartgeometry / services / sketch-rnn / lib / sketch_rnn.js View on Github external
function get_pdf(s) {
        var h = s[0];
        var NOUT = N_mixture;
        var z = nj.add(nj.dot(h, dec_output_w), dec_output_b);
        var z_pen_logits = z.slice([0, 3]);
        var z_pi = z.slice([3 + NOUT * 0, 3 + NOUT * 1]);
        var z_mu1 = z.slice([3 + NOUT * 1, 3 + NOUT * 2]);
        var z_mu2 = z.slice([3 + NOUT * 2, 3 + NOUT * 3]);
        var z_sigma1 = nj.exp(z.slice([3 + NOUT * 3, 3 + NOUT * 4]));
        var z_sigma2 = nj.exp(z.slice([3 + NOUT * 4, 3 + NOUT * 5]));
        var z_corr = nj.tanh(z.slice([3 + NOUT * 5, 3 + NOUT * 6]));
        z_pen_logits = nj.subtract(z_pen_logits, z_pen_logits.max());
        var z_pen = nj.softmax(z_pen_logits);
        z_pi = nj.subtract(z_pi, z_pi.max());
        z_pi = nj.softmax(z_pi);

        return [z_pi, z_mu1, z_mu2, z_sigma1, z_sigma2, z_corr, z_pen];
    };
github MindExMachina / smartgeometry / services / sketch-rnn / lib / sketch_rnn.js View on Github external
var reverse_sequence = [];
        var i;
        var s;
        var N = sequence.length;
        for (i = 0; i < N; i++) {
            s = [sequence[i][0] / scale_factor, sequence[i][1] / scale_factor, sequence[i][2], sequence[i][3], sequence[i][4]];
            forward_sequence.push(s);
        }
        for (i = N - 1; i >= 0; i--) {
            s = [forward_sequence[i][0], forward_sequence[i][1], forward_sequence[i][2], forward_sequence[i][3], forward_sequence[i][4]];
            reverse_sequence.push(s);
        }
        var output_fw = enc_fw_lstm.encode(forward_sequence);
        var output_bw = enc_bw_lstm.encode(reverse_sequence);
        var output = nj.concatenate([output_fw, output_bw]);
        var mu = nj.add(nj.dot(output, enc_mu_w), enc_mu_b);

        var presig = nj.add(nj.dot(output, enc_sigma_w), enc_sigma_b);
        var sigma = nj.sqrt(nj.exp(presig));

        return [mu, sigma];
    };
github MindExMachina / smartgeometry / services / sketch-rnn / lib / sketch_rnn.js View on Github external
LSTMCell.prototype.forward = function(x, h, c) {
    var concat = nj.concatenate([x, h]);
    var hidden = nj.add(nj.dot(concat, this.Wfull), this.bias);
    var num_units = this.num_units;
    var forget_bias = this.forget_bias;

    var i = nj.sigmoid(hidden.slice([0 * num_units, 1 * num_units]));
    var g = nj.tanh(hidden.slice([1 * num_units, 2 * num_units]));
    var f = nj.sigmoid(nj.add(hidden.slice([2 * num_units, 3 * num_units]), forget_bias));
    var o = nj.sigmoid(hidden.slice([3 * num_units, 4 * num_units]));

    var new_c = nj.add(nj.multiply(c, f), nj.multiply(g, i));
    var new_h = nj.multiply(nj.tanh(new_c), o);

    return [new_h, new_c];
};
LSTMCell.prototype.encode = function(sequence) {
github MindExMachina / smartgeometry / services / sketch-rnn / lib / sketch_rnn.js View on Github external
LSTMCell.prototype.forward = function(x, h, c) {
    var concat = nj.concatenate([x, h]);
    var hidden = nj.add(nj.dot(concat, this.Wfull), this.bias);
    var num_units = this.num_units;
    var forget_bias = this.forget_bias;

    var i = nj.sigmoid(hidden.slice([0 * num_units, 1 * num_units]));
    var g = nj.tanh(hidden.slice([1 * num_units, 2 * num_units]));
    var f = nj.sigmoid(nj.add(hidden.slice([2 * num_units, 3 * num_units]), forget_bias));
    var o = nj.sigmoid(hidden.slice([3 * num_units, 4 * num_units]));

    var new_c = nj.add(nj.multiply(c, f), nj.multiply(g, i));
    var new_h = nj.multiply(nj.tanh(new_c), o);

    return [new_h, new_c];
};
LSTMCell.prototype.encode = function(sequence) {