构建两层神经网络
1.定义神经网络结构
根据X,Y的维度定义(此时的X,Y包括所有数据)输入层/隐藏层/输出层数量
2.初始化模型的参数
采用np.random.randn(a,b) * 0.01随机初始化一个维度为(a,b)的矩阵
将偏向量初始化为0
np.zeros(a,b)
分别初始化个层的w b 即 w1,b1,w2, b2,并用assert语句确保各参数的维度
以字典形式输出w,b
3.进行前向传播
- 使用字典类型的参数w,b,检索每个参数
- 实现前向传播,计算Z[1] A[1] Z[2] A[2],训练集里面所有例子的预测向量,并assert确保各值维度正确
- 反向传播所需的值存储在“cache”中,cache将作为反向传播函数的输入(Z1 A1 Z2 A2 )
4.计算损失
- 采用交叉熵 此处可能出现由于np.exp函数导致的Warnning 可百度忽略warning
- 使用np.squeeze函数remove矩阵中维度为1的维
5.后向传播
- 按照后向传播公式,一一计算,注意各矩阵维度,正确定义计算,并以字典形式输出梯度值组成的举证矩阵。
6.更新参数
- 按照公式进行更新
7.整合各个函数至模型中
8.预测函数
- 直接使用训练出来的参数,将测试集和参数一起作为前向传播的变量,得到预测结果后,结合输出层的激活函数进行判定分类(此处是sigmoid函数的结果进行四舍五入分类)
网友评论