人工智能开发中如何计算浅层神经网络的前向传播

在这里插入图片描述
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。https://www.captainbed.cn/north
在这里插入图片描述

引言

浅层神经网络(Shallow Neural Network)是深度学习的基础模型之一,通常包含一个输入层、一个隐藏层和一个输出层。前向传播(Forward Propagation)是神经网络的核心计算过程,用于将输入数据通过网络的各层传递,最终得到预测结果。本文将详细介绍浅层神经网络的前向传播计算方法,并通过代码示例帮助读者深入理解。


1. 浅层神经网络的结构

浅层神经网络的结构通常包括以下部分:

  1. 输入层:接收输入数据,每个神经元对应输入数据的一个特征。
  2. 隐藏层:通过激活函数对输入数据进行非线性变换,提取特征。
  3. 输出层:输出最终的预测结果。

以单隐藏层的浅层神经网络为例,其结构如下:

  • 输入层:( n ) 个神经元。
  • 隐藏层:( m ) 个神经元。
  • 输出层:( k ) 个神经元。

2. 前向传播的计算步骤

前向传播的计算过程可以分为以下几个步骤:

2.1 输入层到隐藏层

  1. 线性变换:将输入数据与隐藏层的权重矩阵相乘,并加上偏置。
    在这里插入图片描述

  2. 激活函数:对线性输出应用激活函数(如ReLU、Sigmoid)。
    在这里插入图片描述

2.2 隐藏层到输出层

  1. 线性变换:将隐藏层的激活输出与输出层的权重矩阵相乘,并加上偏置。
    在这里插入图片描述

  2. 激活函数:对线性输出应用激活函数(如Softmax、Sigmoid)。
    在这里插入图片描述


3. 代码实现

以下是一个简单的浅层神经网络前向传播的Python实现,使用NumPy库进行矩阵运算。

import numpy as np

# 定义激活函数
def sigmoid(x):
    return 1 / (1 + np.exp(-x))

def relu(x):
    return np.maximum(0, x)

def softmax(x):
    exp_x = np.exp(x - np.max(x, axis=1, keepdims=True))  # 防止溢出
    return exp_x / np.sum(exp_x, axis=1, keepdims=True)

# 定义浅层神经网络类
class ShallowNeuralNetwork:
    def __init__(self, input_size, hidden_size, output_size):
        self.input_size = input_size
        self.hidden_size = hidden_size
        self.output_size = output_size
        
        # 初始化权重和偏置
        self.W1 = np.random.randn(self.input_size, self.hidden_size)
        self.b1 = np.zeros((1, self.hidden_size))
        self.W2 = np.random.randn(self.hidden_size, self.output_size)
        self.b2 = np.zeros((1, self.output_size))
    
    def forward(self, X):
        # 输入层到隐藏层
        self.z1 = np.dot(X, self.W1) + self.b1
        self.a1 = relu(self.z1)
        
        # 隐藏层到输出层
        self.z2 = np.dot(self.a1, self.W2) + self.b2
        self.a2 = softmax(self.z2)
        
        return self.a2

# 示例数据
X = np.array([[0.1, 0.2, 0.3], [0.4, 0.5, 0.6]])
nn = ShallowNeuralNetwork(input_size=3, hidden_size=4, output_size=2)
output = nn.forward(X)
print("预测结果:\n", output)

4. 前向传播的详细解释

4.1 输入层到隐藏层

  1. 线性变换
    在这里插入图片描述

  2. 激活函数

    • 对线性输出 ( z_1 ) 应用激活函数(如ReLU),得到激活输出 ( a_1 )。

4.2 隐藏层到输出层

  1. 线性变换
    在这里插入图片描述

  2. 激活函数

    • 对线性输出 ( z_2 ) 应用激活函数(如Softmax),得到最终的预测结果 ( a_2 )。

5. 总结

浅层神经网络的前向传播是深度学习的基础,通过线性变换和激活函数的组合,可以将输入数据转换为预测结果。本文详细介绍了前向传播的计算步骤,并通过代码示例展示了如何实现这一过程。掌握前向传播的原理和实现方法,是理解更复杂神经网络模型的关键。


参考资料

  1. Deep Learning by Ian Goodfellow
  2. Neural Networks and Deep Learning by Michael Nielsen
  3. NumPy 官方文档

注意:本文中的代码示例仅供参考,实际应用中可能需要根据具体需求进行调整和优化。
在这里插入图片描述

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北辰alk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值