微博|类似Python的太极图形编程语言和别语言不太一样的ti.field

微博|类似Python的太极图形编程语言和别语言不太一样的ti.field

【微博|类似Python的太极图形编程语言和别语言不太一样的ti.field】在太极编程代码中 , 我们经常会看到诸如x = ti.var(ti.i32 shape=4) , a = ti.Vector([3 4
) , a = ti.Matrix.var(3 3 dt=ti.f32 shape=(5 4)) , pixels = ti.field(dtype=float shape=(n * 2 n))这类的代码 , 其中ti.field就是域 。
作为特定领域编程语言 , 太极(taichi)编程语言还是和其他的编程语言不太一样的 。 比如这次学习的ti.field概念 。 这在太极语言中很重要也很别具一格 。 机智客看视频分享中 , 据说其创始人也很喜欢这个 , 因为这个名字其实挺妙的 , 既可以翻译成是一个域 , 也可以翻译为是一个场 。 可谓一语双关 。

那么ti.field是什么 , 其实它是一个N维的包含各种元素的全局元素张量 。 当然这里的N并不一定是指代多维 , 也可以是指代0或1 。 也就是说 , 不同的N代表着不同的意思 。 比如当N=0的时候 , 那么它是标量 。 如果N=1的话 , 那么它就是矢量 。 而如果N=2的话 , 那么这就是一个矩阵 。 当然了 , N还可以等于3 , 4 , 5等 。
而根据文档显示 , 太极官方定义的是 , 在Taichi中 , 张量是全局变量 。 张量分为稀疏张量和密集张量 。 张量的元素可以是标量 , 也可以是矩阵 。 根据官方文档的说明 , 虽然数学上矩阵被视为2D张量 , 但在Taichi中 ,张量 和 矩阵 是两个完全不同的概念 。矩阵可以用作张量元素 , 因此你可以使每个元素都是矩阵的张量 。
所以作为一个全局元素 , ti.field其实比较灵活 , 也就是在初始化后 , 代码开头把它定义了 , 它就既能在Taichi里被调用也可以在Python脚本语言里被调用 。 而回到文章开头那句代码pixels = ti.field(dtype=float shape=(n * 2 n))则表示一个形状是n*2n类型是浮点的张量 。