这里写目录标题
本节内容
向量化的神经网络是如何工作的。
神经网络规模扩大的原因
神经网络可以向量化,并行计算硬件(包括GPU以及一些CPU功能)非常擅长进行大规模矩阵乘法。
如何向量化代码(引言)
1.原始代码
计算第一层的激活值,使用for循环计算每个神经元的激活值,最终输出3个激活值。
2.向量化代码
首先把X,W,B都转化成二维数组,然后for循环的内容用nump的matmul矩阵乘法表示,最终激活值也是一个1行3列的二维数组。
向量乘法和矩阵乘法
1.向量与向量乘法
1.1 一般形式
两个向量对应元素的乘积之和,结果是一个标量。
1.2 转置形式
- 向量的转置是将行向量转换为列向量,或将列向量转换为行向量。
- 可以把行向量当成1行2列的二维数组,列向量当成2行1列的二维数组,有助于理解矩阵乘法。
- 转置的目的是为了一个二维数组的行数匹配另一个二维数组的列数,从而可以进行矩阵乘法。
1.3 小结
列向量的点积与行向量和列向量的矩阵乘法是等效的。
2.向量与矩阵乘法
2.1 a的转置乘矩阵
2.2 计算过程
a的转置乘W第一列,作为Z的第一个元素。a的转置乘W的第二列,作为Z的第二个元素
3.矩阵与矩阵乘法
3.1 矩阵的转置
列转换为行,一次一列,直到所有列转换完毕。
3.2 看待矩阵的方式
看到矩阵,就想想列。看到矩阵的转置,就想想行。
3.3 计算过程
- A转置第一行与W第一列乘积:13+24=11,放入新二维数组的第一行第一列。
- A转置第一行与W第二列乘积:14+2 6=17,放入新二维数组的第一行第二列
- A转置第二行与W第一列乘积:-13±24=-11,放入新二维数组的第二行第一列。
- A转置第二行与W第二列乘积:-14±2 6=-17,放入新二维数组的第二行第二列。
矩阵乘法的规则
1.标记矩阵
新矩阵的行数对应第一个矩阵的行数。新矩阵的列数对应第二个矩阵的列数。
2.计算矩阵
矩阵Z的第一行第一列的点,对应A转置第一行与W第一列的点积,11。
矩阵Z的最终结果
3.矩阵可以相乘的条件
第一个矩阵的列数等于第二个矩阵的行数。
如何向量化代码(具体实现)
1.Numpy实现二维数组转置
二维数组调用.T,即可实现转置。
2.Numpy矩阵相乘
两个方法是相同含义。
3.整体过程
矩阵对应二维数组的写法。