torch中cmul()函数的用法总结

来源:互联网 发布:mysql触发器更新时间 编辑:程序博客网 时间:2024/05/17 00:16

cmul计算的是两个张量tensor1与tensor2之间的element-wise-multiplication (数组元素依次相乘或者元素对应相乘)。 
值得注意的是:两个张量之间的元素个数必须相等,它们大小不一定要相同。 
说明:当tensor1与tensor2之间的维数满足可以矩阵相乘时,就还原为矩阵乘法;当二者之间的维数不满足普通矩阵乘法时,按照行优先的顺序依次将二者对应位置的数字相乘,存放在新的张量中。 
cmul()的应用主要有以下四种形式: 
1、y:cmul(x) —-将y中所有的元素分别与x中对应位置的元素相乘,得到新的张量维数和y一致; 
2、torch.cmul(z,x,y) – –将x和y相乘的结果存放在z中,z的维数和x一致; 
3、z=torch.cmul(x,y) – –相当于矩阵相乘,结果存放在新的张量z中,z的维数和x一致; 
4、z:cmul(x,y) – –与2类似,将结果存放在z中,z的维数和x一致。 
实例

x = torch.rand(2,3)  print('x:')  print(x)y = torch.rand(3,2)  print('y:')  print(y)y:cmul(x)            print('y:')  print(y)z1 = x:cmul(y)       print('z1:') print(z1)torch.cmul(z2,x,y)   print('z2:') print(z2)z3 = torch.cmul(x,y) print('z3:') print(z3)z4 = torch.cmul(y,x) print('z4:') print(z4)z5 = torch.rand(x:size()) z5:cmul(x,y)         print('z5:') print(z5)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

结果如下: 
%%%%%%%%%%%%%%%%%%%%%%%%%% 
x: 
0.8708 0.2033 0.9649 
0.3312 0.5697 0.4939 
[torch.DoubleTensor of size 2x3] 
y: 
0.0082 0.4973 
0.6427 0.0190 
0.1723 0.5376 
[torch.DoubleTensor of size 3x2] 
y: 
0.0071 0.1011 
0.6201 0.0063 
0.0981 0.2655 
[torch.DoubleTensor of size 3x2] 
z1: 
0.0062 0.0206 0.5983 
0.0021 0.0559 0.1311 
[torch.DoubleTensor of size 2x3] 
z2: 
0.0000 0.0021 0.3710 
0.0000 0.0055 0.0348 
[torch.DoubleTensor of size 2x3] 
z3: 
0.0000 0.0021 0.3710 
0.0000 0.0055 0.0348 
[torch.DoubleTensor of size 2x3] 
z4: 
0.0000 0.0021 
0.3710 0.0000 
0.0055 0.0348 
[torch.DoubleTensor of size 3x2] 
z5: 
0.0000 0.0021 0.3710 
0.0000 0.0055 0.0348 
[torch.DoubleTensor of size 2x3] 
%%%%%%%%%%%%%%%%%%%%%%%%%%

参考资料: 
http://torch7.readthedocs.org/en/latest/maths/index.html

0 0