深度学习(3)神经网络

一、神经网络的层(Neural Network Layers)

1. 工作原理

在神经网络(Neural Network)中,数据是逐层传递(feed-forward)的。每一层都会接收前一层的输出,经过加权、偏置和激活函数(activation function)计算后,再将结果传递给下一层。

神经网络一般包含以下三类层次结构:

  • 输入层(Input Layer)

    • 接收原始输入数据(如图像像素、特征向量、数值型输入等)。

    • 输入层本身不进行任何计算,只负责将数据传递给下一层。

  • 隐藏层(Hidden Layers)

    • 每一层都会执行以下操作:

      其中:

      方括号中的上标 [l] 表示第几层,方便区分不同层的计算。

      • W[l]:第 l 层的权重矩阵(Weights)

      • b[l]:偏置(Bias)

      • a[l]:激活值(Activation),即该层的输出

      • σ:激活函数(Activation Function)

  • 输出层(Output Layer)

    • 最后一层神经元负责输出结果,例如分类概率或回归值。

    • 在分类任务中,常使用 SigmoidSoftmax 函数输出概率。

有时在输出层之后,会增加一个"阈值处理(Thresholding)"步骤,比如当预测概率 ≥ 0.5 时,输出类别为 1,否则为 0。


二、更复杂的神经网络

当神经网络的隐藏层数增多时,我们称之为 深度神经网络(Deep Neural Network, DNN)

注意: 计算网络层数时,不包括输入层

例如,一个包含两层隐藏层和一个输出层的网络,我们称它是一个 "2 层神经网络"

在每一层中,我们都会有对应的公式:

其中:

  • :输入层的特征向量;

  • :第一层隐藏层的输出;

  • :第二层隐藏层的输出;

  • 最后一层 :输出层的结果。

例如:

层数增加可以让模型学习到更复杂的特征,但也会增加过拟合风险,需要配合正则化或 Dropout 控制模型复杂度。


三、向前传播的神经网络推理

前向传播(Forward Propagation) 是神经网络进行"推理(inference)"的计算过程。

它的目标是:从输入出发,经过多层计算,得到最终预测结果。

流程如下:

  1. 输入层接收数据;

  2. 每一层执行线性计算 + 激活函数;

  3. 输出层得到预测值;

  4. 若是训练阶段,会将输出值与真实值计算损失函数(Loss)。

用公式表示:


四、代码示例:前向传播推理

下面通过一个简单示例来说明------预测咖啡烘焙质量

假设我们有两个输入特征:

  • 烘焙时间(Time)

  • 烘焙温度(Temperature)

目标是预测烘焙是否成功(输出一个概率)。

1.使用 TensorFlow 实现

python 复制代码
import tensorflow as tf

# 输入数据
x = tf.constant([[15.0, 180.0]])  # 时间、温度

# 定义参数
W1 = tf.Variable([[0.1, 0.2],
                  [0.3, 0.4],
                  [0.5, 0.6]])
b1 = tf.Variable([[0.1, 0.1, 0.1]])

W2 = tf.Variable([[0.7],
                  [0.8],
                  [0.9]])
b2 = tf.Variable([[0.2]])

# 前向传播
a1 = tf.nn.relu(tf.matmul(x, W1) + b1)
y_hat = tf.sigmoid(tf.matmul(a1, W2) + b2)

print("预测结果概率:", y_hat.numpy())

输出的概率值(例如 0.87)表示"烘焙成功"的可能性为 87%。

2.使用 PyTorch 实现

python 复制代码
import torch
import torch.nn as nn

x = torch.tensor([[15.0, 180.0]])

# 定义两层神经网络
model = nn.Sequential(
    nn.Linear(2, 3),  # 输入层到隐藏层
    nn.ReLU(),
    nn.Linear(3, 1),  # 隐藏层到输出层
    nn.Sigmoid()
)

# 前向传播
y_hat = model(x)
print("预测结果概率:", y_hat.item())

TensorFlow 与 PyTorch 的计算逻辑一致:输入 → 矩阵运算 → 激活函数 → 输出概率。


五、TensorFlow 中的数据处理

TensorFlow 的数据结构与 NumPy 十分类似,但有几个关键区别:

比较项 NumPy TensorFlow
基本数据类型 ndarray tf.Tensor
是否支持 GPU 运算
是否支持自动求导 是(通过 tf.GradientTape
使用场景 通用科学计算 深度学习训练与推理

代码对比示例

python 复制代码
import numpy as np
import tensorflow as tf

a_np = np.array([[1, 2], [3, 4]])
a_tf = tf.constant([[1, 2], [3, 4]])

print("NumPy 求和:", np.sum(a_np))
print("TensorFlow 求和:", tf.reduce_sum(a_tf))

输出结果类似,但 TensorFlow 的计算图可自动在 GPU 上执行,并支持反向传播。

TensorFlow 是建立在计算图(Computation Graph)之上的框架,所有操作都能追踪梯度,用于模型训练。


六、总结(Summary)

  • 神经网络由输入层、隐藏层、输出层组成;

  • 每一层的输出是下一层的输入;

  • 层数计算时不包括输入层;

  • 前向传播是神经网络进行推理的核心过程;

  • TensorFlow 与 PyTorch 都能实现相同的前向计算逻辑;

  • TensorFlow 的张量(Tensor)与 NumPy 的数组类似,但具有 GPU 加速与自动求导优势。

相关推荐
文火冰糖的硅基工坊3 小时前
[人工智能-大模型-70]:模型层技术 - 从数据中自动学习一个有用的数学函数的全过程,AI函数计算三大件:神经网络、损失函数、优化器
人工智能·深度学习·神经网络
我叫张土豆3 小时前
Neo4j 版本选型与 Java 技术栈深度解析:Spring Data Neo4j vs Java Driver,如何抉择?
java·人工智能·spring·neo4j
地平线开发者3 小时前
大模型 | VLA 初识及在自动驾驶场景中的应用
算法·自动驾驶
py有趣3 小时前
LeetCode学习之实现strStr()
学习·算法·leetcode
夏鹏今天学习了吗3 小时前
【LeetCode热题100(52/100)】课程表
算法·leetcode·职场和发展
祁思妙想3 小时前
【LeetCode100】--- 101.重排链表【思维导图+复习回顾】
算法·leetcode·链表
IT_陈寒3 小时前
Vue3性能提升30%的秘密:5个90%开发者不知道的组合式API优化技巧
前端·人工智能·后端
文火冰糖的硅基工坊3 小时前
[人工智能-大模型-69]:模型层技术 - 计算机处理问题的几大分支:数值型性问题、非数值型问题?
算法·决策树·机器学习
OG one.Z4 小时前
05_逻辑回归
算法·机器学习·逻辑回归