人工智能必知必会-再看矩阵与向量

每天五分钟,解决一个人工智能问题。

本节最重要的还是形状!

向量的内积也可以看成矩阵运算

向量本身只有一个维度,一根轴,如果你要把他看成是矩阵,就需要设定两根轴,也就是两个中括号。

设定矩阵x3,x4:

import numpy as np
x3 = np.array([[1,1]])
x4 = np.array([[1,0]])
x3.shape, x4.shape

输出:

((1, 2), (1, 2))
此时不能直接使用dot来进行运算,因为在numpy看来他已经是矩阵而不是向量。

你看以下操作,出错了吧!为什么出错?因为x3,x4是矩阵,矩阵是没有dot操作的。只有向量才有dot操作。

np.dot(x3, x4)

输出:

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

 in 
----> 1 np.dot(x3, x4)


ValueError: shapes (1,2) and (1,2) not aligned: 2 (dim 1) != 1 (dim 0)

那我用矩阵相乘呢?使用matmul呢?

np.matmul(x3, x4)

输出:

---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

 in 
----> 1 np.matmul(x3, x4)


ValueError: matmul: Input operand 1 has a mismatch in its core dimension 0, with gufunc signature (n?,k),(k,m?)->(n?,m?) (size 1 is different from 2)

为什么不可以?
对的,因为是矩阵相乘,所以一定要注意形状,此时我们只需要把其中的一个矩阵转置一下。见下图:

人工智能必知必会-再看矩阵与向量_第1张图片
转置

把x4转换前,转换后的情况分别输出:

print(x4)
print("x4 shape: ", x4.shape)
print(x4.transpose())
print("x4 transpose shape: ", x4.transpose().shape)

输出:

[[1 0]]
x4 shape:  (1, 2)
[[1]
 [0]]
x4 transpose shape:  (2, 1)

好了,此时x3的形状1x2, x4的形状2x1,满足矩阵相乘的要求,来吧,乘一下!

np.matmul(x3, x4.transpose())

输出:

array([[1]])

总结:
1 本节又一次强调了矩阵的形状,在神经网络的训练过程中,每层的输入输出形状必须要对应上,再次强调!
2 矩阵是可以转置的,编程落地上可以使用numpy的transpose来实现。

目录:
人工智能必知必会-前言
人工智能必知必会-标量,向量,矩阵,张量
人工智能必知必会-向量的加减与缩放
人工智能必知必会-向量的内积
人工智能必知必会-向量之间的距离
人工智能必知必会-初识矩阵
人工智能必知必会-矩阵与向量
人工智能必知必会-矩阵的加减法
人工智能必知必会-矩阵乘法
人工智能必知必会-矩阵与方程组
人工智能必知必会-再看矩阵与向量
人工智能必知必会-矩阵与向量乘法的物理意义
人工智能必知必会-词向量(案例)
人工智能必知必会-矩阵相乘上

人工智能必知必会-矩阵相乘下

你可能感兴趣的:(人工智能必知必会-再看矩阵与向量)