为什么尝试"1 / torch.Tensor"会触发错误?

这很尴尬,但我似乎有困难来执行一个相当简单的除法操作在Torch中。 这是我尝试做的:

th> a
 0.5058  0.2460  0.9038  0.6348
 0.6324  0.3435  0.2530  0.9692
 0.1531  0.1178  0.5588  0.5323
[torch.DoubleTensor of size 3x4]

                                                                      [0.0004s]
th> 1/a
bad argument #1 to '?' (torch.DoubleTensor expected, got boolean)
stack traceback:
    [C]: at 0x7ff5e513e9d0
    [C]: in function '__div'
    [string "_RESULT={1/a}"]:1: in main chunk
    [C]: in function 'xpcall'
    /home/tasty/torch/install/share/lua/5.1/trepl/init.lua:651: in function 'repl'
    ...asty/torch/install/lib/luarocks/rocks/trepl/scm-1/bin/th:199: in main chunk
    [C]: at 0x00406670
                                                                      [0.0002s]
th>

这个完全一样的操作在numpy中是简单明了的并且按预期工作,为什么在Torch中必须有所不同呢?

点赞
用户6076729
用户6076729

似乎这种方式没有被实现。如果你没有找到如何做,试试这个:

x = torch.Tensor(2, 2):fill(2)

z = torch.div(x, 2) --会返回一个新的 Tensor,其结果为 x / 2。
torch.div(z, x, 2) --会将 x / 2 的结果放入 z 中。
x:div(2) --会就地将 x 的所有元素除以 2。
z:div(x, 2) --将 x / 2 的结果放入 z 中。
2016-07-09 21:50:52
用户2435187
用户2435187

Torch已经有了这些方法

local z= torch.cinv(x) -- 复制一个副本
x:cinv() -- 原地按元素求逆
2016-07-11 21:17:59