2016-07-09 4 views
0

これは恥ずかしいですが、トーチではかなり単純な除算操作を実行する方法を理解するのが難しいようです。ここで は私が何をしようとするものです。numpyのなぜ "1/torch.Tensor"を試行するとエラーが発生しますか?

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> 

この正確な操作1/aはプレーンstraighforwardで、期待通りに動作しますが、なぜそれがトーチに異なるように持っていますか?

答えて

1

このように実装されていないようです。 あなたはそれを行う方法を見つけることができませんでした場合は、これを試してみてください。

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. 
1

トーチはすでにこのためmethodsを持っています。

local z= torch.cinv(x) -- to make a copy 
x:cinv() -- for an in place element wise inverse 
関連する問題