当前位置: 首页 > news >正文

BP 算法探秘 :神经网络的幕后引擎

大家好,我是沛哥儿,很高兴又和大家见面了。

在人工智能的世界里,神经网络如同大脑一般神秘又强大,而其中 **BP 算法(Backpropagation Algorithm)**就是驱动这个 “大脑” 不断学习进化的幕后引擎。

在这里插入图片描述

文章目录

  • 一、算法的起源与发展
  • 二、BP 算法的工作原理
    • 前向传播
    • 反向传播
  • 三、BP 算法的优势
  • 四、BP 算法的局限
  • 五、改进策略与优化方案
  • 六、在 AI 领域的应用实例
    • 图像识别
    • 语音识别
    • 自然语言处理
  • 总结

一、算法的起源与发展

BP 算法最早可追溯到 1974 年,由 Paul Werbos 在其博士论文中提出,但当时并未引起广泛关注。直到 1986 年,David Rumelhart、Geoffrey Hinton 和 Ronald Williams 重新阐述了该算法,并证明其能够有效解决多层神经网络的训练问题,才真正让 BP 算法大放异彩。它的出现,打破了神经网络训练的瓶颈,成为连接主义学派的重要里程碑,推动了神经网络从理论走向实际应用。

二、BP 算法的工作原理

前向传播

前向传播是 BP 算法的 “第一步”,它的作用是将输入数据通过神经网络的各层传递,最终得到输出结果。

假设我们有一个简单的三层神经网络,输入层有 n n n个神经元,隐藏层有 m m m个神经元,输出层有 k k k个神经元。输入向量为 x = ( x 1 , x 2 , ⋯ , x n ) T \mathbf{x}=(x_1,x_2,\cdots,x_n)^T x=(x1,x2,,xn)T,隐藏层的权重矩阵为 W ( 1 ) \mathbf{W}^{(1)} W(1),偏置向量为 b ( 1 ) \mathbf{b}^{(1)} b(1);输出层的权重矩阵为 W ( 2 ) \mathbf{W}^{(2)} W(2),偏置向量为 b ( 2 ) \mathbf{b}^{(2)} b(2)

在隐藏层,输入信号与权重进行加权求和,并加上偏置,然后通过激活函数 f f f进行处理,得到隐藏层的输出 h \mathbf{h} h

h = f ( W ( 1 ) x + b ( 1 ) ) \mathbf{h} = f(\mathbf{W}^{(1)}\mathbf{x} + \mathbf{b}^{(1)}) h=f(W(1)x+b(1))

常见的激活函数有 Sigmoid 函数、ReLU 函数等。以 Sigmoid 函数为例,其表达式为:

f ( z ) = 1 1 + e − z f(z)=\frac{1}{1 + e^{-z}} f(z)=1+ez1

接着,隐藏层的输出 h \mathbf{h} h作为输出层的输入,经过类似的加权求和、加偏置和激活函数处理,得到最终的输出 y \mathbf{y} y

y = g ( W ( 2 ) h + b ( 2 ) ) \mathbf{y} = g(\mathbf{W}^{(2)}\mathbf{h} + \mathbf{b}^{(2)}) y=g(W(2)h+b(2))

下面是用 Python 实现简单前向传播的代码示例:

import numpy as np# 定义Sigmoid激活函数
def sigmoid(x):return 1 / (1 + np.exp(-x))
# 输入数据
x = np.array([[0.35], [0.9]])
# 隐藏层权重和偏置
W1 = np.array([[0.1, 0.8], [0.4, 0.6]])
b1 = np.array([[0.3], [0.9]])# 输出层权重和偏置
W2 = np.array([[0.3, 0.9], [0.2, 0.1]])
b2 = np.array([[0.1], [0.2]])# 隐藏层计算
h = sigmoid(np.dot(W1, x) + b1)
# 输出层计算
y = sigmoid(np.dot(W2, h) + b2)
print(y)

反向传播

当输出结果 y \mathbf{y} y与期望输出 t \mathbf{t} t存在误差时,就需要通过反向传播来调整神经网络的参数。反向传播的核心思想是将误差从输出层反向传递到前面的各层,根据误差对权重和偏置进行调整,使得误差逐渐减小

计算误差通常使用损失函数,常见的有均方误差(MSE),其公式为:

L = 1 2 ∑ i = 1 k ( t i − y i ) 2 L = \frac{1}{2}\sum_{i = 1}^{k}(t_i - y_i)^2 L=21i=1k(tiyi)2

接下来,通过链式法则计算误差对各层权重和偏置的梯度,以更新参数。例如,输出层权重的更新公式为:

W ( 2 ) = W ( 2 ) − η ∂ L ∂ W ( 2 ) \mathbf{W}^{(2)} = \mathbf{W}^{(2)} - \eta \frac{\partial L}{\partial \mathbf{W}^{(2)}} W(2)=W(2)ηW(2)L

其中, η \eta η是学习率,控制参数更新的步长。

下面是在上述代码基础上,添加反向传播更新参数的 Python 代码:

import numpy as np# 定义Sigmoid激活函数
def sigmoid(x):return 1 / (1 + np.exp(-x))# 定义Sigmoid函数的导数
def sigmoid_derivative(x):return x * (1 - x)# 输入数据
x = np.array([[0.35], [0.9]])# 期望输出
t = np.array([[0.5], [0.8]])# 隐藏层权重和偏置
W1 = np.array([[0.1, 0.8], [0.4, 0.6]])
b1 = np.array([[0.3], [0.9]])# 输出层权重和偏置
W2 = np.array([[0.3, 0.9], [0.2, 0.1]])
b2 = np.array([[0.1], [0.2]])# 学习率
learning_rate = 0.5
for i in range(10000):# 前向传播h = sigmoid(np.dot(W1, x) + b1)y = sigmoid(np.dot(W2, h) + b2)# 反向传播# 计算输出层误差error = t - yd_output = error _* sigmoid__derivative(y)# 计算隐藏层误差error_hidden = np.dot(W2.T, d_output)d_hidden = error_hidden * sigmoid_derivative(h)# 更新权重和偏置W2 += learning_rate * np.dot(d_output, h.T)b2 += learning_rate * d_outputW1 += learning_rate * np.dot(d_hidden, x.T)b1 += learning_rate * d_hidden
print(y)

三、BP 算法的优势

强大的非线性映射能力:能够处理复杂的非线性关系,比如在图像识别中识别各种形状和颜色的物体。

自学习与自适应:无需手动提取特征,通过大量数据训练,自动调整参数适应数据模式。

泛化能力:在训练集上学习到的模式能够较好地应用于新的未知数据。

容错性:即使部分神经元出现故障或数据存在噪声,仍能给出相对合理的输出。

四、BP 算法的局限

训练时间长:当神经网络结构复杂、数据量大时,训练过程可能需要耗费大量时间和计算资源。

易陷入局部极小值:在误差曲面中,算法可能找到局部最优解,而不是全局最优解,导致模型性能不佳。

对初始权重敏感:不同的初始权重可能导致最终训练结果差异很大,需要多次尝试找到合适的初始值。

可能过拟合:在训练数据上表现良好,但在测试数据上泛化能力差。

五、改进策略与优化方案

引入动量项:在权重更新时,加入上一次的更新量,使参数更新更加平滑,避免陷入局部极小值,公式为:

Δ W ( l ) = α Δ W ( l ) − η ∂ L ∂ W ( l ) \Delta \mathbf{W}^{(l)} = \alpha \Delta \mathbf{W}^{(l)} - \eta \frac{\partial L}{\partial \mathbf{W}^{(l)}} ΔW(l)=αΔW(l)ηW(l)L

其中, α \alpha α是动量因子。

自适应学习率:根据训练过程动态调整学习率,如 Adagrad、Adadelta、RMSProp、Adam 等算法。

正则化技术:如 L1 和 L2 正则化,通过在损失函数中添加正则化项,防止模型过拟合。

六、在 AI 领域的应用实例

图像识别

在 MNIST 手写数字识别任务中,BP 算法可以训练神经网络对 0 - 9 的手写数字进行分类。通过大量的手写数字图像数据训练,网络能够学习到数字的特征,实现高精度的识别。

以下是使用 Keras 库结合 BP 算法实现 MNIST 手写数字识别的简单代码:

from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Flatten
from keras.utils import to_categorical# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()# 数据预处理
x_train = x_train.reshape(-1, 784).astype('float32') / 255
x_test = x_test.reshape(-1, 784).astype('float32') / 255
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)# 构建神经网络模型
model = Sequential([Flatten(input_shape=(28, 28)),Dense(128, activation='relu'),Dense(10, activation='softmax')
])# 编译模型
model.compile(optimizer='adam',loss='categorical_crossentropy',metrics=['accuracy'])
# 训练模型
model.fit(x_train, y_train, epochs=5, batch_size=64)
# 评估模型
test_loss, test_acc = model.evaluate(x_test, y_test)
print('Test accuracy:', test_acc)

语音识别

将语音信号转换为文本信息时,BP 算法可训练神经网络学习语音的声学特征和语言模型,实现语音到文字的转换。

代码略

自然语言处理

在文本分类、情感分析等任务中,BP 算法训练的神经网络可以理解文本语义,完成相应的处理任务。

代码略

总结

BP 算法作为神经网络训练的核心算法,凭借其独特的工作原理和强大的学习能力,在人工智能领域发挥着不可替代的作用。虽然它存在一些局限性,但通过不断的改进和优化,依然有着广阔的应用前景。

随着人工智能技术的不断发展,BP 算法也面临着新的机遇和挑战。一方面,在量子计算、神经形态芯片等新技术的支持下,BP 算法的训练效率有望得到大幅提升;另一方面,如何更好地解决局部极小值、过拟合等问题,以及将 BP 算法与其他新兴技术(如强化学习、生成对抗网络)相结合,将是未来研究的重要方向。


所有图片来源网络

相关文章:

BP 算法探秘 :神经网络的幕后引擎

大家好,我是沛哥儿,很高兴又和大家见面了。 在人工智能的世界里,神经网络如同大脑一般神秘又强大,而其中 **BP 算法(Backpropagation Algorithm)**就是驱动这个 “大脑” 不断学习进化的幕后引擎。 文章目录…...

物联网相关

文章目录 1 MQTT2 MQTT FX3 EMQ X 1 MQTT MQTT是一种基于发布/订阅模式的轻量级物联网消息协议,全称为Message Queuing Telemetry Transport(消息队列遥测传输)。它具有低功耗、低带宽占用、可靠性高等特点,广泛应用于物联网设备…...

【Axure高保真原型】3级多选下拉列表

今天和大家分享3级多选下拉列表原型模板,这个模版是用中继器制作的,所以使用也很方便,选项的数据在中继器表格里维护即可自动生成交互效果,具体效果可以打开下方原型地址体验或者点击下方视频观看 【原型效果含使用说明】 【Axur…...

光敏材料与智能传感技术的能源系统创新研究

一、光敏储能体系的作用机理与技术创新 1.1 分子光能转换机制 基于分子构型变化的能量存储技术展现出独特优势,其核心机理涉及光敏材料在光照下的可逆分子构型变化。以偶氮苯体系为例,在365nm紫外光激发下,分子发生反式到顺式的异构转变&…...

Docker 安装 kafka (bitnami/kafka:4.0)

1、拉取镜像 docker pull bitnami/kafka:4.02、创建挂载目录 mkdir -p /user/lzl/tool/docker/kafka/bitnami/bitnami_kafka_4.0/home/datamkdir -p /user/lzl/tool/docker/kafka/bitnami/bitnami_kafka_4.0/home/logs3、给挂载目录授权 chmod 777 /user/lzl/tool/docker/ka…...

NameSilo转入转出域名

一、总起 域名转入转出主要沟通方式就是靠注册邮箱收取转移授权码。 因为namesilo的界面一直在慢慢改动(很慢很慢),所以本文和网上教程里的截图有所不同,以后本文可能也会与实际界面有所不同。 二、转入域名 1. 在其它域名服务商…...

Python----深度学习(基于DNN的吃鸡预测)

一、目标 如何使用 PyTorch 实现一个简单的深度神经网络(DNN)模型,并用于回归任务。该模型通过训练数据集来预测玩家在游戏中的最终排名百分比。代码通过读取数据集、数据处理、模型训练和模型评估等步骤。 二、数据集介绍 和平精英&#xf…...

DeepSeek系列(10):与其他AI工具协同

DeepSeek与绘图AI配合使用 在当今多元化的AI生态中,将不同专长的AI工具协同使用,能够实现远超单一工具的综合效果。DeepSeek作为强大的语言模型,与专业绘图AI的配合尤为默契,可以在创意构思与视觉呈现之间建立无缝桥梁。 创意-视觉协作流程 从文本到图像的完整路径 创意…...

Spark-Streaming核心编程:有状态转化操作与DStream输出

在Spark-Streaming的学习旅程中,有状态转化操作和DStream输出是两个关键知识点,今天就来深入聊聊它们。 先说说有状态转化操作,这里面 UpdateStateByKey 和 WindowOperations 很重要。 UpdateStateByKey 主要用于跨批次维护状态,就…...

Ldap高效数据同步- MirrorMode双主复制模式配置详解(上)

#作者:朱雷 文章目录 一、Syncrepl 复制和MirrorMode复制1.1. 什么是复制模式1.2. 什么是 syncrepl同步复制1.3. 什么是 MirrorMode 复制(双主模式)1.4. 双数据中心配置镜像模式架构 二、Ldap环境部署三、配置Mirror复制类型3.1. 配置节点1配…...

【刷题Day28】Python/JAVA - 02(浅)

Python 什么是 Python 的闭包? 闭包(Closure)是Python中的一种独特的函数机制。简而言之,闭包是指在一个内部函数中,引用了外部函数的变量,而这个外部函数已经执行完毕并返回了内部函数,然而内…...

纯净IP的优势:稳定性与安全性的结合

在跨境电商、数据采集、社交运营等对网络质量要求高的场景中,选择一个可靠的IP资源,是保护账号安全、提升业务效率的关键。纯净IP凭借其独特的稳定性与安全性,成为越来越多用户的选择。本文将带你深入了解纯净IP的价值,以及如何应…...

探索DeepWiki:GitHub源码阅读的变革性工具

DeepWiki 是什么 DeepWiki 是由 Cognition Labs 精心打造的一款创新工具,堪称 GitHub Repo 源代码的 “智慧解读器”,能将其转化为可对话式文档 ,为开发者提供实时交流、即时更新文档的功能。它基于 Devin 技术,为每一个 GitHub …...

基于WebRTC技术,EasyRTC音视频实时通话助力全网会议的智能化转型

一、方案背景 随着数字化转型,企业、教育、政府等对全网会议需求激增。传统视频会议部署复杂、成本高、兼容性差,无法满足远程协作的多样化需求。EasyRTC实时通信功能强大,能为全网会议提供高效、稳定、易用的解决方案,支持多终端…...

设计模式全解析:23种经典设计模式及其应用

创建型模式 1. 单例模式(Singleton Pattern) 核心思想:确保一个类只有一个实例,并提供一个全局访问点。适用场景:需要共享资源的场景,如配置管理、日志记录等。 public class Singleton {// 静态变量保存…...

Web开发-JavaEE应用依赖项Log4j日志Shiro验证FastJson数据XStream格式

知识点: 1、安全开发-JavaEE-第三方依赖开发安全 2、安全开发-JavaEE-数据转换&FastJson&XStream 3、安全开发-JavaEE-Shiro身份验证&Log4j日志处理 一、演示案例-WEB开发-JavaEE-第三方依赖&FastJson&XStream FastJson 一个阿里巴巴开发的J…...

小集合 VS 大集合:MySQL 去重计数性能优化

小集合 VS 大集合:MySQL 去重计数性能优化 前言一、场景与问题 🔎二、通俗执行流程对比三、MySQL 执行计划解析 📊四、性能瓶颈深度剖析 🔍五、终极优化方案 🏆六、总结 前言 📈 测试结果: 在…...

什么是模块化区块链?Polkadot 架构解析

原文:https://polkadot.com/blog/understanding-modular-blockchains/ 作者:Joey Prebys 编译:OneBlock 区块链的构建方式有很多种,而不同的架构选择会直接影响性能、可扩展性和开发者体验。随着行业的发展,单体区块…...

C++翻转数相乘 2024年信息素养大赛复赛 C++小学/初中组 算法创意实践挑战赛 真题详细解析

目录 C++翻转数相乘 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、运行结果 五、考点分析 六、 推荐资料 1、C++资料 2、Scratch资料 3、Python资料 C++翻转数相乘 2024年信息素养大赛 C++复赛真题 一、题目要求 1、编程实现 假设一个…...

Go 语言中的 `select` 语句详解

select 是 Go 语言中处理通道(Channel)操作的一个强大控制结构&#xff0c;它允许 goroutine 同时等待多个通道操作。下面我将全面详细地解释 select 语句的各个方面。 基本语法 select 语句的基本语法如下&#xff1a; select { case <-ch1:// 如果从 ch1 成功接收数据&…...

Nacos简介—4.Nacos架构和原理二

大纲 1.Nacos的定位和优势 2.Nacos的整体架构 3.Nacos的配置模型 4.Nacos内核设计之一致性协议 5.Nacos内核设计之自研Distro协议 6.Nacos内核设计之通信通道 7.Nacos内核设计之寻址机制 8.服务注册发现模块的注册中心的设计原理 9.服务注册发现模块的注册中心的服务数…...

Web服务器技术选型指南:主流方案、核心对比与策略选择

Web服务器技术选型指南&#xff1a;主流方案、核心对比与策略选择 一、主流Web服务器概览 在当今互联网架构中&#xff0c;Web服务器承担着处理HTTP请求、管理资源分配和保障服务稳定性的核心职责。根据应用场景和技术特性的不同&#xff0c;主流的Web服务器可分为以下五类&a…...

Git和Gitlab的部署和操作

一。GIT的基本操作 1.GIT的操作和查看内容 [rootmaster ~]# yum install git -y [rootmaster ~]# git config --list&#xff1a;查看所有配置 2.GIT仓库初始化 [rootmaster ~]# mkdir /gittest&#xff1a;创建目录 [rootmaster ~]# cd /gittest/&#xff1a;进入目录 [rootm…...

【Git】初始Git及入门命令行

目录 为什么学习 Git 这么重要&#xff1f; 1. 安装 Git 2. 配置 Git 3. 创建本地 Git 仓库 1. git初始化远程仓库&#xff1a; git init 2. 就是要新增两个必须要配置的选项&#xff1a; name 和 email 3. 查看当前本地仓库的配置情况&#xff1a; git config -l 4. 删…...

自然语言to SQL的评估

一、怎么进行一个自然语言to SQL评估&#xff1f; 1.DB——准备可用的数据表 2.准备问题集&#xff0c;自然语言|正确的预期SQL 3.大模型执行完成的SQL 4.Table.json——一个存储表格数据或者数据库表结构信息的 JSON 文件。当前是存储的表结构信息的&#xff0c;存储数据库…...

详解React Fiber架构中,reconcile阶段的具体工作流程

在 React Fiber 架构里&#xff0c;协调&#xff08;Reconcile&#xff09;阶段处于虚拟 DOM&#xff08;VDOM&#xff09;与实际 DOM 渲染之间&#xff0c;主要承担着把 VDOM 转化为 Fiber 节点树、开展 Diff 比较并标记节点变化的任务。下面详细阐述协调阶段的具体工作流程&a…...

迅雷精简绿色融合版【高速下载版】12.1.9.2870【11.2.2.1716】【20250426】

迅雷Thunder 11官方版会提示敏感需升级不能使用&#xff0c;本人制作的迅雷 12.1.9.2870【11.2.2.1716】精简绿色融合版是在11.2.2.1716版本的基础上制作的&#xff0c;实际版本号显示为12.1.9.2870&#xff0c;不是真正意义的迅雷12.1.9.2870精简绿色版&#xff0c;本实质上还…...

决策树相关案例

全流程 以下是一个更复杂、全流程的决策树和随机森林示例&#xff0c;不仅包括模型训练和预测&#xff0c;还涵盖了数据预处理、超参数调优以及模型评估的可视化。我们依旧使用鸢尾花数据集&#xff0c;并额外引入 GridSearchCV 进行超参数调优&#xff0c;使用 matplotlib 进…...

AI音频核爆!Kimi开源“六边形战士”Kimi-Audio,ChatGPT语音版?

音频处理领域的天花板被撕开了。 刚刚&#xff0c;kimi 发布全新通用音频基础模型 Kimi-Audio&#xff0c;这款由月之暗面&#xff08;Moonshot AI&#xff09;推出的开源模型&#xff0c;在 24 小时内收获 3.2 万星标&#xff0c;不仅以 1.28% 词错率刷新语音识别纪录&#xf…...

vscode vue 的插件点击组件不能跳转到文件问题解决

ctrl shift p 打开命令行&#xff0c;搜索 更改语言模式 选择第二项 选择 vue 现在可以了...

二叉树的前序、中序和后序遍历:详解与实现

1. 前序遍历&#xff08;Pre-order Traversal&#xff09; 1.1 定义 前序遍历的顺序是&#xff1a;先访问根节点&#xff0c;然后递归地遍历左子树&#xff0c;最后递归地遍历右子树。 1.2 访问顺序 对于任意节点&#xff1a; 访问根节点。 递归遍历左子树。 递归遍历右子…...

5、Rag基础:RAG 专题

RAG 简介 什么是检索增强生成? 检索增强生成(RAG)是指对大型语言模型输出进行优化,使其能够在生成响应之前引用训练数据来源之外的权威知识库。大型语言模型(LLM)用海量数据进行训练,使用数十亿个参数为回答问题、翻译语言和完成句子等任务生成原始输出。在 LLM 本就强…...

FISCO BCOS 智能合约开发详解

一、FISCO BCOS 智能合约开发概览 FISCO BCOS 是一个国产开源联盟链平台&#xff0c;支持两种类型的智能合约&#xff1a;​FISCO BCOS Documentation Solidity 合约&#xff1a;​与以太坊兼容&#xff0c;使用 Solidity 语言编写&#xff0c;适用于灵活的业务逻辑开发。 预…...

Linux操作系统从入门到实战(四)Linux基础指令(下)

Linux操作系统从入门到实战&#xff08;四&#xff09;Linux基础指令&#xff08;下&#xff09; 前言一、date 指令二、cal 指令三、find 指令四、which 指令五、whereis 指令六、alias 指令七、grep 指令八、zip/unzip 指令九、tar 指令&#xff08;重要&#xff09;十、bc 指…...

使用 LLM助手进行 Python 数据可视化

在数据科学中&#xff0c;数据可视化是一项至关重要的任务&#xff0c;旨在揭示数据背后的模式和洞察&#xff0c;并向观众传达这些信息。然而&#xff0c;在编程语言&#xff08;如 Python&#xff09;中创建有洞察力的图表有时可能会耗时且复杂。本文介绍了一种借助 AI 助手&…...

docker安装jenkins自动化测试

#搭建gitlab docker pull gitlab/gitlab-ce docker run -d\--hostname localhost \-p 443:443 -p 80:80 -p 2222:22 \--name gitlab \-v /myproject/gitlab/config:/etc/gitlab \-v /myproject/gitlab/logs:/var/log/gitlab \-v /myproject/gitlab/data:/var/opt/gitlab \gitla…...

Python3:面向对象编程

这里写目录标题 &#x1f9e9; 面向对象编程&#xff1a;让代码化身为积木世界一、核心概念&#xff1a;类与对象二、四大基石&#xff1a;面向对象的核心特性1️⃣ 封装(Encapsulation)&#xff1a;包装复杂性&#xff0c;提供简单接口2️⃣ 继承(Inheritance)&#xff1a;站在…...

数据可视化 —— 饼图

一、饼图的所有常用使用场景 饼图是一种直观展示数据占比关系的图表&#xff0c;适用于以下常见场景&#xff1a; 1. 市场与商业分析 市场份额&#xff1a;展示不同品牌/产品在市场中的占有率。 收入构成&#xff1a;分析公司各业务线或产品的收入占比。 客户分布&#xff1…...

OpenLayers WebGL与3D渲染 (进阶一)

1. WebGL概述 WebGL是一种JavaScript API&#xff0c;它基于OpenGL ES 2.0/3.0标准&#xff0c;允许在不使用插件的情况下在兼容的Web浏览器中呈现高性能的交互式3D和2D图形。在地理信息系统(GIS)领域&#xff0c;WebGL为地图渲染和空间数据可视化提供了强大的性能支持。 1.1…...

ARP协议(地址解析协议)

ARP协议是用来把IP地址转换成MAC地址的。 因为在局域网里&#xff0c;真正通信靠的是MAC地址&#xff0c;但我们平时只知道目标的IP地址&#xff0c;所以需要一个办法把IP地址变成MAC地址 —— 这个过程就是靠ARP完成的。 举个超简单的例子&#xff1a; 你电脑要发数据给192.1…...

深度学习常见框架:TensorFlow 与 PyTorch 简介与对比

&#x1f407;明明跟你说过&#xff1a;个人主页 &#x1f3c5;个人专栏&#xff1a;《深度探秘&#xff1a;AI界的007》 &#x1f3c5; &#x1f516;行路有良友&#xff0c;便是天堂&#x1f516; 目录 一、引言 1、为什么需要深度学习框架&#xff1f; 2、框架的发展背…...

iOS 类与对象底层原理

iOS 类与对象底层原理 文章目录 iOS 类与对象底层原理探索对象本质objc_setProperty 源码cls与类的关联原理联合体isa的类型isa_t 原理探索initIsa方法通过setClass方法中的shiftcls来验证绑定的一个流程通过 isa & ISA_MSAK通过object_getClass通过位运算 类&类的结构…...

Babel、core-js、Loader之间的关系和作用全解析

在现代前端开发中&#xff0c;Babel、polyfill&#xff08;如 core-js&#xff09;和 Loader 是非常常见又容易混淆的几个概念。为了彻底搞明白它们的作用、关系和使用方法&#xff0c;下面一篇文章详细梳理。 一、Babel的作用 Babel 是一个 JavaScript 的编译器&#xff0c;主…...

总线位宽不变,有效数据位宽变化的缓存方案

总线位宽不变&#xff0c;有效数据位宽变化的缓存方案 譬如总线位宽为64bit&#xff0c;但是有时候只有高32bit有效&#xff0c;有时只有低32bit有效&#xff0c;有时64bit都有效。总线上收到的数据要先缓存到FIFO中&#xff0c;那么这个FIFO的宽度和深度如何设置呢&#xff1…...

若依脱敏功能升级:接口返回想脱就脱,想不脱就不脱(实现灵活可控制的数据脱敏)

若依原生框架中的脱敏功能不够灵活&#xff08;默认超级管理员不脱敏&#xff0c;其他则脱敏&#xff09;。 有时候&#xff0c;我们有些接口想要脱敏&#xff0c;但是有些接口又不想脱敏。&#xff08;例如列表查询的时候脱敏。修改的时候&#xff0c;不想数据脱敏&#xff0…...

【Azure Redis 缓存】在Azure Redis中,如何限制只允许Azure App Service访问?

问题描述 在Azure Redis服务中&#xff0c;如何实现只允许Azure App Service访问呢&#xff1f; 问题解答 Azure Redis 开启 防火墙的功能&#xff0c;并在防火墙中添加上App Service的出口IP地址即可。两步即可实现此目的&#xff01; 1&#xff09;查询 App Service 的出口IP…...

如何解决无训练数据问题:一种更为智能化的解决方案

手动标注数据真的很费时间,而且买数据集又贵得要命,还不一定能完全符合你的需求。但这里有个令人兴奋的好消息,为啥不用 AI 来解决这个问题呢? 别再依赖传统方法了,你可以用像 LLM(大型语言模型)和图像生成器这样的 AI 工具,为你的特定目标创建合成训练数据。如今有那…...

AI 应用同质化:一场看不见的资源 “吞噬战”

大家好&#xff0c;我是涛涛&#xff0c;今天聊聊令人担心的事情。 一、同质化的“繁荣”背后 当ChatGPT在2022年掀起全球AI热潮时&#xff0c;中国互联网行业迅速进入“All in AI”模式。根据艾瑞咨询数据&#xff0c;2023年国内AI应用市场新增注册企业超2.3万家&#xff0c…...

Java + Spring Boot + MyBatis获取以及持久化sql语句的方法

在Java的Spring Boot项目中结合MyBatis获取实际执行的SQL语句&#xff0c;可以通过以下几种方法实现&#xff1a; 方法一&#xff1a;配置MyBatis日志级别 通过调整日志级别&#xff0c;MyBatis会输出执行的SQL语句及参数&#xff0c;适用于快速调试。 修改application.prope…...

「浏览器即OS」:WebVM技术栈如何用Wasm字节码重构冯·诺依曼体系?

一、冯诺依曼架构的维度坍塌 1. 传统计算模型的能量耗散 浏览器执行效率瓶颈分析&#xff1a; 操作x86指令周期Wasm指令周期能效比提升矩阵乘法3894.2x内存访问1234x系统调用120012100x 二、WebVM的量子纠缠架构 1. 浏览器内核的重构 // 基于WASI的系统调用处理 #[no_mangl…...