概要

plunkerでtensorflow.jsやってみた。
xorやってみた。
tf.variableで書いてみた。
学習したweight、biasを取り出した。
rustで、推論してみた。

サンプルコード



fn tanh(x: f64) -> f64 {
    let a: f64 = (x).exp();
    let b: f64 = (-x).exp();
    return (a - b) / (a + b);
}
fn sigmoid(x: f64) -> f64 {
    return 1.0 / (1.0 + (-x).exp());
}
fn main() {
    let w1 = [[-3.4681022, 0.379121, -1.4711456, 2.2247136, 2.3135107, 2.7624693, -1.83576, -1.1545312], [2.1978209, 0.2895245, 2.0881913, -1.3450832, -1.4154571, 1.9255028, 3.2867477, 1.956522]];
    let b1 = [-0.6591252, 0.3864409, 0.4982838, 0.3707547, 0.3982254, -0.3612466, 0.4284867, 0.2701645];
    let w2 = [[1.4324994 ], [0.7911373], [-2.3011343],  [-1.7614117], [-2.4442003], [3.9701838], [-1.837263], [-1.3641325]];
    let b2 = [0.9285715];
    for i in 0..4
    {
        let mut x = [0.0, 0.0];   
        let mut y = [0.0];
        let mut h = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0];
        if i == 0
        {
            x = [1.0, 0.0];
            print!("1, 0 = ");
        }
        if i == 1
        {
            x = [0.0, 1.0];
            print!("0, 1 = ");
        }
        if i == 2
        {  
            x = [1.0, 1.0];
            print!("1, 1 = ");
        }
        if i == 3
        {
            x = [0.0, 0.0];
            print!("0, 0 = ");
        }
        for k in 0..2
        {
            for l in 0..8
            {
                h[l] += x[k] * w1[k][l];
            }
        }
        for l in 0..8
        {
            h[l] += b1[l];
            h[l] = tanh(h[l]);
        }
        for k in 0..8
        {
            for l in 0..1
            {
                y[l] += h[k] * w2[k][l];
            }
        }
        for k in 0..1
        {
            y[k] += b2[k];
            y[k] = sigmoid(y[k]);
        }
        println!("{} ", y[0]);
    }
}



成果物

以上。

广告
将在 10 秒后关闭
bannerAds