ULTCAN.COM

Tritium demos conv2d Contact Us

conv2d · Rust

tritium demo conv2d
transcript · python · c · rust

Download
// TRITIUM-PROVENANCE sha256=fa150e08b678777a032d553feb0ff5a804a6e70b0b4702daf495d667b6bba189 lang=rust
// TRITIUM-HEIGHT high=1.00 mid=0.00 low=0.00
fn im2col_f(x: &mut [f64], h: i64, w: i64, kh: i64, kw: i64, out: &mut [f64]) -> i64 {
    let mut j = 0;
    let mut u = 0;
    let mut v = 0;

    let mut p = 0;
    let mut i = 0;
    while i < ((h - kh) + 1) {
        j = 0;
        while j < ((w - kw) + 1) {
            u = 0;
            while u < kh {
                v = 0;
                while v < kw {
                    out[p as usize] = x[(((((i + u) * w) + (j + v))) as usize)];
                    p += 1;
                    v += 1;
                }
                u += 1;
            }
            j += 1;
        }
        i += 1;
    }
    p
}

fn conv2d_f(x: &mut [f64], h: i64, w: i64, k: &mut [f64], kh: i64, kw: i64, out: &mut [f64]) -> i64 {
    let mut j = 0;
    let mut u = 0;
    let mut v = 0;
    let mut x_2 = 0.0;

    let mut sum = (h - kh) + 1;
    let mut sum_2 = (w - kw) + 1;
    let mut i = 0;
    while i < sum {
        j = 0;
        while j < sum_2 {
            x_2 = 0.0;
            u = 0;
            while u < kh {
                v = 0;
                while v < kw {
                    x_2 = x_2 + (x[(((((i + u) * w) + (j + v))) as usize)] * k[((((u * kw) + v)) as usize)]);
                    v += 1;
                }
                u += 1;
            }
            out[((((i * sum_2) + j)) as usize)] = x_2;
            j += 1;
        }
        i += 1;
    }
    sum * sum_2
}

fn list_get(a: &[i64], i: i64) -> i64 {
    if i < 0 {
        return 0;
    }
    let i = i as usize;
    if i >= a.len() { 0 } else { a[i] }
}

fn list_set(vals: &mut [i64], i: i64, v: i64) -> i64 {

    vals[i as usize] = v;
    v
}

fn relu(vals: &mut [i64], n: i64) -> i64 {

    let mut i = 0;
    while i < n {
        if list_get(vals, i) < 0 {
            list_set(vals, i, 0);
        }
        i += 1;
    }
    n
}
ULTCAN.COM