为什么我不能在没有 : 的情况下使用转置函数?

why can not i use the transpose function without :?

我想转置 torch/lua 中的张量。
实际上我并没有完全理解“:”的意思,但它真的让我很沮丧 我是 lua 和火炬的初学者。 只有这个有效:

x:t()

我想做这个

x = torch.t(x)

当我这样做时,我看到错误

attempt to call field 't' (a nil value)

我试图在互联网上搜索解决方案,但没有找到。

在Lua中,x:method(args)x.method(x, args)的语法糖。这是一种省略 self 参数的方法。

也就是说,转置二维张量 x 的最简单方法确实是 x:t()。也可以写成x.t(x),但是比较复杂。

最后 torch 没有方法 transposet 作为字段(不像 squeeze 例如你可以同时做这两个 torch.squeeze(x)x:squeeze()),我不知道为什么会这样选择,但是写成x:t()似乎不​​会太痛苦,也是我发现最接近数学符号的符号方便。