LoginSignup
0
0

More than 5 years have passed since last update.

jsdoでconvnetjs その11

Last updated at Posted at 2017-05-24

概要

convnetjsで、101から255までの偶数を学習させて、1から100まで聞いてみた。

結果

1 : odd 2 : even 3 : odd 4 : even 
5 : odd 6 : even 7 : odd 8 : even 
9 : odd 10 : even 11 : odd 12 : even 
13 : odd 14 : even 15 : odd 16 : even 
17 : odd 18 : even 19 : odd 20 : even 
21 : odd 22 : even 23 : odd 24 : even 
25 : odd 26 : even 27 : odd 28 : even 
29 : odd 30 : even 31 : odd 32 : even 
33 : odd 34 : even 35 : odd 36 : even 
37 : odd 38 : even 39 : odd 40 : even 
41 : odd 42 : even 43 : odd 44 : even 
45 : odd 46 : even 47 : odd 48 : even 
49 : odd 50 : even 51 : odd 52 : even 
53 : odd 54 : even 55 : odd 56 : even 
57 : odd 58 : even 59 : odd 60 : even 
61 : odd 62 : even 63 : odd 64 : even 
65 : odd 66 : even 67 : odd 68 : even 
69 : odd 70 : even 71 : odd 72 : even 
73 : odd 74 : even 75 : odd 76 : even 
77 : odd 78 : even 79 : odd 80 : even 
81 : odd 82 : even 83 : odd 84 : even 
85 : odd 86 : even 87 : odd 88 : even 
89 : odd 90 : even 91 : odd 92 : even 
93 : odd 94 : even 95 : odd 96 : even 
97 : odd 98 : even 99 : odd 100 : even 

サンプルコード

function toarray(n) {
    var ary = new Array;
    for (var i = -1 ; i < 7; i++)
    {
        var s = 1;
        if (i > -1) s = 2 << i;
        var b = n & (s)
        if (b > 0)
        {
            ary.push(1.0);
        }
        else
        {
            ary.push(0.0);
        }
    }
    return ary;
}
function oe(n) {
    if (n % 2 == 0)
    {
        return 1;
    }
    else
    {
        return 0;
    }
}
function odd(j, w) {
    var str = "";
    if (w[1] > 0.9)
    {
        str = "even";
    }
    else if (w[0] > 0.9)
    {
        str = "odd";
    }
    return str;
}
function test() {
    var str = "";
    var net = new convnetjs.Net();
    net.makeLayers([{
        type: 'input', 
        out_sx: 1,
        out_sy: 1,
        out_depth: 8
    }, {
        type: 'fc', 
        num_neurons: 10,
        activation: 'tanh'
    }, {
        type: 'softmax', 
        num_classes: 2
    }]);
    var trainer = new convnetjs.Trainer(net);
    var avloss = 0.0;
    for (var i = 0; i < 100; i++) 
    {
        for (var j = 101; j < 256; j++) 
        {
            var point = new convnetjs.Vol(1, 1, 10);
            point.w = toarray(j);   
            var f = oe(j);
            var stats = trainer.train(point, f);
            avloss += stats.loss;
        }
    }
    avloss /= 100 * i;
    alert(avloss);
    for (var j = 1; j < 101; j++) 
    {
        var point = new convnetjs.Vol(1, 1, 10);
        point.w = toarray(j);   
        var prediction = net.forward(point);
        str += j + " : "+ odd(j, prediction.w) + "    ";
        if (j % 4 == 0) str += "<br>";
    }
    return str;
}
var a = test();
document.getElementById('helloWorld').innerHTML = a;

成果物

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0