Пример #1
0
        t = Symbol.t(integer=True)
        dt = Symbol.d_t(integer=True)

        d0 = initial_offset(r, w, 0)
        d1 = initial_offset(r, w, 1)
        d2 = initial_offset(r, w, 2)

        i0 = i - d0
        j0 = j - d1
        t0 = t - d2

        return Lamda[t:n2, j:n1,
                     i:n0](Sum[sum_limit(r, w, n2, dt, t0, 2),
                               sum_limit(r, w, n1, dj, j0, 1),
                               sum_limit(r, w, n0, di, i0, 0)](
                                   x[i0 + di * r[0], j0 + dj * r[1],
                                     t0 + dt * r[2]] @ w[di, dj, dt]))

    if batch_size:
        batch_size = batch_size[0]
        k = Symbol.k(integer=True)
        return Lamda[k:batch_size](conv3d(x[k], w))
    else:
        return conv3d(x, w)


conv3d = Function.conv3d(real=True,
                         nargs=(2, ),
                         eval=conv3d,
                         shape=property(shape))