tastyminerals
tastyminerals

Reputation: 6548

Why attempting "1 / torch.Tensor" triggers an error?

This is embarrassing, yet I seem to have difficulties to figure out how to perform a rather simple division operation in Torch. Here is what I attempt to do:

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>

This exact operation 1/a in numpy is plain straighforward and works as expected, why is it have to be different in Torch?

Upvotes: 0

Views: 247

Answers (2)

user8472
user8472

Reputation: 736

Torch already has methods for this.

local z= torch.cinv(x) -- to make a copy
x:cinv() -- for an in place element wise inverse

Upvotes: 1

Manuel Lagunas
Manuel Lagunas

Reputation: 2751

Seems like it is not implemented in this way. If you didn't find out how to do it, try this:

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

z = torch.div(x, 2) --will return a new Tensor with the result of x / 2.
torch.div(z, x, 2) --will put the result of x / 2 in z.
x:div(2) --will divide all elements of x with 2 in-place.
z:div(x, 2) --puts the result of x / 2 in z.

Upvotes: 1

Related Questions