对于在计算机中矩阵左乘右乘的思考
在学习CS224n assignment的过程中,遇到了这么一句话:
Note: In this assignment, the inputs to neural network layers will be row vectors because this is standard practice for TensorFlow(some built-in TensorFlow functions assume the inputs are row vectors). This means the weight matrix of a hidden layer will right-multiply instead of left-multiply its input(i.e., xW + b instead of Wx + b)
解析
学过矩阵的都知道,对于矩阵运算,我们喜欢使用列向量。对于一个矩阵,我们通常都习惯于将其按照列向量为单位来进行拆分。
但是在计算的大部分语言中,内存中的分配是习惯按行来进行存储的,如果以列为单位来进行拆分矩阵,那么会影响计算机的计算效率。
因此,在计算机中,我们常常按照行的方式来拆分一个矩阵。因而,我们要将原本按列分的东西,默认转置为行,然后再来进行计算。
也就是说,对于W*x + b
(也就是x中的每一列代表一个输入样本的情况下),矩阵W中的每一列代表着样本中的单一个元素需要乘的权重(由于下一层的神经元个数为3,所以这里的权重个数为3)。
最后得到的结果一列