【深度学习】神经网络前向传播简单实现

1|0步骤

  1. 输入层的每个节点与隐藏层的每个节点做点对点计算,加权求和 + 激活函数
  2. 利用同样的方法,计算隐藏层到输出层
  3. 隐藏层对加权结合后的结果使用激活函数,本例使用Sigmoid
  4. 最终的输出值与样本值进行比较,计算出误差

2|0网络结构

3|0代码实现

import numpy as np def _sigmoid(in_data): return 1.0 / (1.0 + np.exp(-in_data)) def init_network(): network = {} # 输入层到隐藏层的权重矩阵和bias network['W1'] = np.array([[0.1, 0.3, 0.5], [0.2, 0.4, 0.6]]) network['b1'] = np.array([0.1, 0.2, 0.3]) # 第一个隐藏层到第二个隐藏层的权重矩阵和bias network['W2'] = np.array([[0.1, 0.4], [0.2, 0.5], [0.3, 0.6]]) network['b2'] = np.array([0.1, 0.2]) # 第二个隐藏层到输出层的权重矩阵和bias network['W3'] = np.array([[0.1, 0.3], [0.2, 0.4]]) network['b3'] = np.array([0.1, 0.2]) return network def forward(network, x): # x是输入 # network是初始化后的模型,已定义好权重矩阵和bias # 提取模型初始化的权重、bias对象 w1, w2, w3 = network['W1'], network['W2'], network['W3'] b1, b2, b3 = network['b1'], network['b2'], network['b3'] # 前向传播 # 输入层到第一个隐藏层 # 输入:x,输出:z1 a1 = x.dot(w1) + b1 # 加权求和 z1 = _sigmoid(a1) # 激活,得到输出z1,作为进入下一层的输入 # 第一个隐藏层到第二个隐藏层 # 输入:z1,输出z2 a2 = z1.dot(w2) + b2 # 加权求和 z2 = _sigmoid(a2) # 激活,得到输出z2,作为进入下一层的输入 # 第二个隐藏层到输出层 a3 = z2.dot(w3) + b3 # 加权求和,得到输出a3 y = a3 return y if __name__ == '__main__': # 初始化网络 network = init_network() # 输入 x = np.array([1.0, 0.5]) # 前向传播 y = forward(network, x) # 打印输出 print(y)

__EOF__

本文作者在青青草原上抓羊
本文链接https://www.cnblogs.com/seansheep/p/15896608.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   SeanSiyang  阅读(117)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示