2、张量运算

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的矩阵

你可能感兴趣的:(2、张量运算)