ULTCAN.COM

Tritium demos conv2d Contact Us

conv2d · Python

tritium demo conv2d
transcript · python · c · rust

Download
# TRITIUM-PROVENANCE sha256=fa150e08b678777a032d553feb0ff5a804a6e70b0b4702daf495d667b6bba189 lang=python
# TRITIUM-HEIGHT high=0.00 mid=0.28 low=0.72 fns=5
# TRITIUM-PSEUDO fn=im2col_f
#| fn im2col_f(x, h, w, kh, kw, out):
#|   return p
# TRITIUM-HEIGHT fn=im2col_f high=0.00 mid=0.36 low=0.64 role=algo_mid
def im2col_f(x: list[float], h: int, w: int, kh: int, kw: int, out: list[float]) -> int:
    oh = h - kh + 1
    ow = w - kw + 1
    p = 0
    i = 0
    while i < oh:
        j = 0
        while j < ow:
            u = 0
            while u < kh:
                v = 0
                while v < kw:
                    out[p] = x[(i + u) * w + (j + v)]
                    p = p + 1
                    v = v + 1
                u = u + 1
            j = j + 1
        i = i + 1
    return p

# TRITIUM-PSEUDO fn=conv2d_f
#| fn conv2d_f(x, h, w, k, kh, kw, out):
#|   return oh * ow
# TRITIUM-HEIGHT fn=conv2d_f high=0.00 mid=0.33 low=0.68 role=algo_mid
def conv2d_f(x: list[float], h: int, w: int, k: list[float], kh: int, kw: int, out: list[float]) -> int:
    oh = h - kh + 1
    ow = w - kw + 1
    i = 0
    while i < oh:
        j = 0
        while j < ow:
            s = 0.0
            u = 0
            while u < kh:
                v = 0
                while v < kw:
                    s = s + x[(i + u) * w + (j + v)] * k[u * kw + v]
                    v = v + 1
                u = u + 1
            out[i * ow + j] = s
            j = j + 1
        i = i + 1
    return oh * ow

# TRITIUM-PSEUDO fn=list_get
#| fn list_get(vals, i):
#|   return vals[i]
# TRITIUM-HEIGHT fn=list_get high=0.00 mid=0.00 low=1.00 role=algo_mid
def list_get(vals: list[int], i: int) -> int:
    return vals[i]

# TRITIUM-PSEUDO fn=list_set
#| fn list_set(vals, i, v):
#|   vals[i] = v
#|   return v
# TRITIUM-HEIGHT fn=list_set high=0.00 mid=0.20 low=0.80 role=algo_mid
def list_set(vals: list[int], i: int, v: int) -> int:
    vals[i] = v
    return v

# TRITIUM-PSEUDO fn=relu
#| fn relu(vals, n):
#|   return n
# TRITIUM-HEIGHT fn=relu high=0.00 mid=0.51 low=0.49
def relu(vals: list[int], n: int) -> int:
    i = 0
    while i < n:
        if list_get(vals, i) < 0:
            list_set(vals, i, 0)
        i = i + 1
    return n
ULTCAN.COM