Taishi的使用-type system

Taishi的類型使用,包括有類型轉換,張量與矩陣等。

  • Type system

Taichi所支持的基本類型:

int32 ti.i32

int64 ti.i64

float32 ti.f32

float64 ti.f64

布爾類型用ti.i32。

類型轉換:用ti.cast來進行類型轉換。

例如:

a = 1.4

b = ti.cast(a, ti.i32)

c = ti.cast(b, ti.f32)

# Element-wise casts in matrices

mat = ti.Matrix([[3.0, 0.0], [0.3, 0.1]])

mat_int = mat.cast(int)

mat_int2 = mat.cast(ti.i32)

  • Matrices矩陣

ti.Matrix 是針對小矩陣如3x3,如果要用64x64,則應該用scalar的2D張量。

ti.Vector 與ti.Matrix相似,只是ti.Vector僅用一列表示。也就是說ti.Vector是ti.Matrix的一個特例。

Tensors and matrices張量與矩陣

張量是Taichi支持的全局變量,張量的一個元素可以是一個標量,也可以是一個Vector或Matrix。

張量既可以是稀疏的,或是稠密的。

在Taichi中,張量與矩陣是2個完全不同的事物,矩陣可以作為張量的元素,也就是說可以有矩陣的張量。

  • 標量的張量

-每個全局變量是一個n維的張量。

-全局標量是0維張量。

-張量可以用索引來訪問,如x[i, j, k],甚至當訪問0維張量時,可以用x[None] = 0來代替x = 0.所以

儘量用索引來訪問張量。

-張量的初始化是為0

-稀疏張量是初始化為不活動的。

  • 矩陣的張量

-建議:如果要有一個128x64的全局表格A,每個節點容納一個3x2的矩陣。這個情況下需要分配一個3

x2矩陣的128x64張量,如下A = ti.Matrix(3, 2, dt=ti.f32, shape=(128, 64))

--如果你要得到表格的i,j的節點,可以用mat = A[i, j],那麼mat就是一個3x2的矩陣。

--如果要得到矩陣的第一行,第二列的元素,則用mat[0, 1]或A[i, j][0, 1]。

  • 矩陣的size

為了性能考慮,矩陣的size一般是2x1, 3x3, 4x4等,對於32x6,則認為是太大了,對於矩陣來說,不建議用。

最好是用張量代替矩陣。如用ti.Matrix(3, 2, dt=ti.f32, shape=(64, 32));

不用ti.Matrix(64, 32, dt=ti.f32, shape=(3, 2))。


Taishi的使用-type system


分享到:


相關文章: