2016-07-13 21 views
0

Wie führe ich bitweise und/oder Operationen an zwei Tensoren in Brenner?Bitweise oder von 2 Tensoren Taschenlampe

lässt uns sagen, ich habe zwei ByteTensors a und b, ich möchte logisch und/oder zwischen ihnen berechnen. Ist es möglich, eine Funktion zu verwenden?

+1

Es gibt elementweise Operationen in Torch implementiert, aber nicht beißen-Weisen. Sie könnten das Problem mithilfe von https://github.com/LuaDist/luabitop innerhalb einer Funktion mit einer Schleife lösen, die durch die Tensors läuft, die die Operationen ausführen. –

Antwort

0

Es gibt keine bitweise und/oder Operation für Tensoren in Torch. Wenn Sie jedoch jedes Bit als separate Tensor-Dimension konvertieren könnten (z. B. in Ihrem Datenvorbereitungsschritt oder mit bitop), können Sie Torch.any(x) als elementweise oder als Operation verwenden.

Update: macht es mehr Sinn torch.cmul zu verwenden und torch.add als mattdns suggests

a = torch.Tensor{0,1,1,0} 
b = torch.Tensor{0,1,0,1} 

th> torch.cmul(a,b):eq(1) 
0 
1 
0 
0 
[torch.ByteTensor of size 4] 

th> torch.add(a,b):ge(1) 
0 
1 
1 
1 
[torch.ByteTensor of size 4] 
2

Nicht sicher, ob dies ist, was Sie suchen, aber helfen könnte.

x = torch.ByteTensor{1,1,0,0,0,0,1} 
y = torch.ByteTensor{0,1,0,1,0,1,1} 

Und

z = torch.cmul(x,y) -- This gives and 
th> z 
0 
1 
0 
0 
0 
0 
1 
[torch.ByteTensor of size 7] 

Oder

z1 = torch.add(x,y) 
z1[z1:gt(1)] = 1 -- removes double counting 

th> z1 
1 
1 
0 
1 
0 
1 
1 
[torch.ByteTensor of size 7] 
+0

Ich habe tatsächlich das Gleiche gemacht! – Bharat