2、张量运算
2021-04-19 本文已影响0人
丁功春
2.1 张量的广播
两个形状相同的张量相加显而易见,而两个形状不同的张量,例如我们将一个2D张量与一个向量相加,会产生什么结果?
结论:较小的张量将会被广播,以匹配较大张量的形状
那什么叫广播?
(1)向较小的张量添加轴,使其ndim与较大的张量相同
(2)将叫小的张量沿着新轴重复
例如:
a =
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
b =
[ 0 1 2 3 ]
b经过上述两步,应该变为下面的样子:
[[ 0 1 2 3 ]
[ 0 1 2 3 ]
[ 0 1 2 3 ]]
因此a+b结果为
[[ 0, 2, 4, 6],
[ 4, 6, 8, 10],
[ 8, 10, 12, 14]]
2.2 张量点积
张量之间的点积可以理解为矩阵相乘
我们知道两个矩阵相乘,当矩阵A的列数(column)等于矩阵B的行数(row)时,A与B可以相乘。
对于两个矩阵x和y,当且仅当x.shape[1]=y.shape[0]是,才可以做点积np.dot(x,y),得到(x.shape[1],y.shape[0])的矩阵,其元素为矩阵相乘的值
2.3 张量变形
x=np.array([[0., 1.],
[2., 3.],
[4., 5.]])
x = x.reshape((2, 3)) #转换为2*3的矩阵
x = x.transpose(x) #矩阵转置,变为3*2的矩阵