deepLearning-One hidden layer Neural Network一个隐藏层的神经网络

本文介绍了如何构建一个具有一个隐藏层的神经网络,包括向前传播的计算过程、常用的激活函数以及向后传播的公式。强调了多层节点在逼近样本上的优势,并提供了训练和优化神经网络的步骤。
摘要由CSDN通过智能技术生成

一直是跟着cousera上吴恩达的课学下来的,目前到一课程第四周,还没做第四周作业。

除了明显为个人手写并用手机拍摄,以下提供的图片都来自吴恩达老师课件的截图

献上关键理解图一张
在这里插入图片描述

一个隐藏层的神经网络

与逻辑回归单元的区别
逻辑回归单元可以看成是只有一个节点的层,而一个隐藏层的神经网络则是有一个多节点的层和有一个节点的层一同构成的。
1.在逻辑回归单元中 w w w的形状是 ( 1 , n ) (1,n) (1,n),而当要输出多个节点时,其形状应该时 ( k , n ) (k,n) (k,n)
2.而要增加层数只能多加几个 w w w b b b,这在后面构建多个隐藏层的神经网络中涉及到。

向前传播公式:
Z [ 1 ] = W [ 1 ] T ∗ X + b [ 1 ] Z^{[1]}=W^{[1]T}*X+b^{[1]} Z[1]=W[1]TX+b[1] A [ 1 ] = σ ( Z [ 1 ] ) A^{[1]}=\sigma(Z^{[1]}) A[1]=σ(Z[1]) Z [ 2 ] = W [ 2 ] T ∗ A [ 1 ] + b [ 2 ] Z^{[2]}=W^{[2]T}*A^{[1]}+b^{[2]} Z[2]=W[2]TA[1]+b[2] A [ 2 ] = σ ( Z [ 2 ] ) A^{[2]}=\sigma(Z^{[2]}) A[2]=σ(Z[2])

上标方括号对应相应层数,例如 Z [ 1 ] Z^{[1]} Z[1]表示第一个隐藏层的Z。注意x那一层为第零层,也可以说x那一层不在层数计算范围内。

公式中的考虑:

1.此时 W [ 1 ] W^{[1]} W[1]应是 ( n , k ) (n,k) (n,k)维度ÿ

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
下面是一个使用 Numpy 实现单隐藏神经网络的 Python 函数: ```python import numpy as np def neural_network(X, Y, hidden_layer_size, num_iterations, learning_rate): # 初始化参数 n_x = X.shape[0] # 输入大小 n_h = hidden_layer_size # 隐藏大小 n_y = Y.shape[0] # 输出大小 W1 = np.random.randn(n_h, n_x) * 0.01 # 隐藏参数 b1 = np.zeros((n_h, 1)) # 隐藏偏置 W2 = np.random.randn(n_y, n_h) * 0.01 # 输出参数 b2 = np.zeros((n_y, 1)) # 输出偏置 # 迭代训练 for i in range(num_iterations): # 前向传播 Z1 = np.dot(W1, X) + b1 A1 = np.tanh(Z1) Z2 = np.dot(W2, A1) + b2 A2 = 1 / (1 + np.exp(-Z2)) # 计算损失 cost = -np.sum(Y * np.log(A2) + (1 - Y) * np.log(1 - A2)) / m # 反向传播 dZ2 = A2 - Y dW2 = np.dot(dZ2, A1.T) / m db2 = np.sum(dZ2, axis=1, keepdims=True) / m dZ1 = np.dot(W2.T, dZ2) * (1 - np.power(A1, 2)) dW1 = np.dot(dZ1, X.T) / m db1 = np.sum(dZ1, axis=1, keepdims=True) / m # 更新参数 W1 = W1 - learning_rate * dW1 b1 = b1 - learning_rate * db1 W2 = W2 - learning_rate * dW2 b2 = b2 - learning_rate * db2 # 每迭代 100 次输出一次损失 if i % 100 == 0: print("Iteration %d, cost: %f" % (i, cost)) # 返回训练好的参数 return {"W1": W1, "b1": b1, "W2": W2, "b2": b2} ``` 这个函数接受四个参数: - `X`:输入数据,一个 $(n_x, m)$ 的矩阵,其中 $n_x$ 是输入大小,$m$ 是样本数。 - `Y`:输出数据,一个 $(n_y, m)$ 的矩阵,其中 $n_y$ 是输出大小。 - `hidden_layer_size`:隐藏大小。 - `num_iterations`:迭代次数。 - `learning_rate`:学习率。 函数的返回值是一个字典,包含训练好的参数。 这个函数使用了 tanh 激活函数和交叉熵损失函数。在训练过程中,它输出每 100 次迭代的损失值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值