本文主要是介绍张量乘积运算实例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
a = torch.tensor([[1, 2, 2], [3, 4, 4]])
b = torch.tensor([[1, 2, 2], [3, 4, 4], [5, 6, 6]])
张量a
的维度是2x3,张量b
的维度是3x3。根据矩阵乘法的规则,a
的列数(3)与b
的行数(3)相等,所以这两个张量可以进行矩阵乘法运算。
矩阵乘法的结果c
的维度将是a
的行数乘以b
的列数,即2x3矩阵乘以3x3矩阵将得到一个2x3的矩阵。
矩阵乘法的计算方式是: 对于结果矩阵c
中的每一个元素c[i][j]
,它是通过取a
的第i
行与b
的第j
列的对应元素的乘积之和得到的。
具体计算如下:
[0][0] = a[0][0]*b[0][0] + a[0][1]*b[1][0] + a[0][2]*b[2][0] = 1*1 + 2*3 + 2*5 = 1 + 6 + 10 = 17
c[0][1] = a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2]*b[2][1] = 1*2 + 2*4 + 2*6 = 2 + 8 + 12 = 22
c0][2] = a[0][0]*b[0][2] + a[0][1]*b[1][2] + a[0][2]*b[2][2] = 1*2 + 2*4 + 2*6 = 2 + 8 + 12 = 22
c[1][0] = a[1][0]*b[0][0] + a[1][1]*b[1][0] + a[1][2]*b[2][0] = 3*1 + 4*3 + 4*5 = 3 + 12 + 20 = 35
c[1][1] = a[1][0]*b[0][1] + a[1][1]*b[1][1] + a[1][2]*b[2][1] = 3*2 + 4*4 + 4*6 = 6 + 16 + 24 = 46
c[1][2] = a[1][0]*b[0][2] + a[1][1]*b[1][2] + a[1][2]*b[2][2] = 3*2 + 4*4 + 4*6 = 6 + 16 + 24 = 46
所以,结果矩阵c
将会是:
[[17, 22, 22], [35, 46, 46]]
实例2:
a = torch.tensor([[1, 2, 2], [3, 4, 4]])
b = torch.tensor([[1, 2, 2,3], [3, 4, 4,5], [5, 6, 6,6]])
张量a
的维度仍然是2x3,但是张量b
的维度现在是3x4(因为每一行有4个元素)。矩阵乘法的规则仍然适用,即第一个张量的列数必须等于第二个张量的行数。
由于a
的列数(3)与b
的行数(3)相等,这两个张量可以进行矩阵乘法运算。结果矩阵c
的维度将是a
的行数乘以b
的列数,即2x4的矩阵。
矩阵乘法的计算方式与之前相同,对于结果矩阵c
中的每一个元素c[i][j]
,它是通过取a
的第i
行与b
的第j
列的对应元素的乘积之和得到的。
具体计算如下:
c[0][0] = a[0][0]*b[0][0] + a[0][1]*b[1][0] + a[0][2]*b[2][0] = 1*1 + 2*3 + 2*5 = 1 + 6 + 10 = 17
c[0][1] = a[0][0]*b[0][1] + a[0][1]*b[1][1] + a[0][2]*b[2][1] = 1*2 + 2*4 + 2*6 = 2 + 8 + 12 = 22
c[0][2] = a[0][0]*b[0][2] + a[0][1]*b[1][2] + a[0][2]*b[2][2] = 1*2 + 2*4 + 2*6 = 2 + 8 + 12 = 22
c[0][3] = a[0][0]*b[0][3] + a[0][1]*b[1][3] + a[0][2]*b[2][3] = 1*3 + 2*5 + 2*6 = 3 + 10 + 12 = 25
c[1][0] = a[1][0]*b[0][0] + a[1][1]*b[1][0] + a[1][2]*b[2][0] = 3*1 + 4*3 + 4*5 = 3 + 12 + 20 = 35c[1][1] = a[1][0]*b[0][1] + a[1][1]*b[1][1] + a[1][2]*b[2][1] = 3*2 + 4*4 + 4*6 = 6 + 16 + 24 = 46c[1][2] = a[1][0]*b[0][2] + a[1][1]*b[1][2] + a[1][2]*b[2][2] = 3*2 + 4*4 + 4*6 = 6 + 16 + 24 = 46
c[1][3] = a[1][0]*b[0][3] + a[1][1]*b[1][3] + a[1][2]*b[2][3] = 3*3 + 4*5 + 4*6 = 9 + 20 + 24 = 53
所以,结果矩阵c
将会是:
[17, 22, 22, 25], [35, 46, 46, 53]]
实例3:
如果是mul运算呢?a和b两个张量必须形状相同,例如都是2*3,则对应的行和列分别乘积运算,得到的张量c还是2*3
例如 a = torch.tensor([[1, 2, 3], [3, 4, 5]])
b = torch.tensor([[5, 6, 7], [7, 8, 9]])
c=torch.mul(a,b)
使用mul
操作符进行逐元素乘法的结果将会是:
[1*5, 2*6, 3*7], [3*7, 4*8, 5*9]]
也就是c[i][j]=a[i][j]*b[i][j]
这篇关于张量乘积运算实例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!