首页
学习
活动
专区
工具
TVP
发布

类似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*2,n类型是浮点的张量。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20211212A03T1D00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券