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

一、智能体强化学习——强化学习基础

1.1 强化学习与深度学习的基本概念

1.1.1 强化学习的核心思想

什么是强化学习?

  • 强化学习(Reinforcement Learning, RL):指在与环境(Environment)的反复交互中,智能体(Agent)通过“试错”获取经验,并依据获得的奖励(Reward)学习出最优策略(Policy),以期在未来的决策中取得最大化的累积回报(Return)。

  • 核心要素

    1. 智能体(Agent):在环境中执行动作的主体;
    2. 环境(Environment):Agent 与之交互的外部世界;
    3. 状态(State):环境在某一时刻的刻画,Agent 能观测到或部分观测到;
    4. 动作(Action):Agent 针对所处状态执行的操作;
    5. 奖励(Reward):环境对 Agent 所执行动作的反馈信号,用来衡量动作的好坏;
    6. 策略(Policy):Agent 在任意给定状态下选择动作的规则或函数 $ π ( a ∣ s ) \pi(a|s) π(as));
    7. 目标:在整个交互过程中累积尽可能多的奖励(或最大化期望折扣累积奖励)。

强化学习与监督/无监督学习的区别

  • 监督学习(Supervised Learning)

    • 有“正确标签”作为监督信息;
    • 训练目标是最小化预测与标签之间的损失(如分类错误率、回归均方差)。
  • 无监督学习(Unsupervised Learning)

    • 无任何标签信息,尝试从数据中发现分布结构或聚类模式;
    • 常见应用:聚类、降维、异常检测等。
  • 强化学习(Reinforcement Learning)

    • 没有直接的“正确动作”标签,只有环境给出的奖励信号;
    • 学习是通过“试错”来迭代地调整策略,以期获得最大累计回报;
    • 当前动作会影响未来的状态和奖励,存在时间与序列上的依赖。

强化学习的基本流程

  1. Agent 根据某种策略 π \pi π 选择动作 a t a_t at
  2. 环境执行该动作并返回下一状态 s t + 1 s_{t+1} st+1 与即时奖励 r t r_t rt
  3. Agent 更新自己的策略或价值函数;
  4. 重复交互直到任务结束(或达到最大时间步数)。

这个反复交互与决策-反馈的过程是强化学习最突出的特点。不断从环境中“试错”并更新策略,以适应不确定或动态的外界。


1.1.2 深度学习基础回顾

为了将强化学习扩展到高维、复杂的状态空间(如图像、文本),往往需要借助 深度神经网络 来进行函数逼近。此时就进入了 深度强化学习(Deep Reinforcement Learning, DRL) 的范畴。以下是深度学习的几个关键概念:

  1. 神经网络结构

    • 通常由多层线性或卷积、循环等结构堆叠,加上激活函数(ReLU、Sigmoid、Tanh 等)构成;
    • 可以视为一个可微分的函数 f θ ( x ) f_\theta(x) fθ(x),其中 θ \theta θ 表示模型参数(权重和偏置)。
  2. 梯度下降与损失函数

    • 损失函数(Loss Function):衡量预测与目标之间差异的函数,常见如均方误差、交叉熵;
    • 梯度下降(Gradient Descent):利用目标函数相对于参数的梯度来迭代更新参数;
    • 优化器(Optimizer):SGD、Adam、RMSProp 等都是常用的梯度下降算法变体,用于加速收敛、提升稳定性。
  3. 深度学习在强化学习中的角色

    • 函数逼近器:将状态作为输入,输出价值(Q 值)或动作的概率分布;
    • 特征提取:通过卷积网络或其他结构,从原始高维数据(如图像)中提取有用的特征。

结合深度学习后,强化学习能够应对高维连续状态、复杂的感知和控制任务,如 Atari 游戏、机器人操控、自动驾驶等场景。


1.2 马尔可夫决策过程(MDP)

1.2.1 MDP 基本定义

强化学习通常用 马尔可夫决策过程(Markov Decision Process, MDP) 来建模。MDP 是一个五元组 ⟨ S , A , P , R , γ ⟩ \langle \mathcal{S}, \mathcal{A}, P, R, \gamma \rangle S,A,P,R,γ

  1. 状态空间 S \mathcal{S} S

    • 系统可能处于的所有状态的集合(离散或连续)。
  2. 动作空间 A \mathcal{A} A

    • Agent 可执行的所有动作集合(离散或连续)。
  3. 转移概率 P ( s t + 1 ∣ s t , a t ) P(s_{t+1} | s_t, a_t) P(st+1st,at)

    • 从状态 s t s_t st 执行动作 a t a_t at 后进入下一状态 s t + 1 s_{t+1} st+1 的概率分布。
    • “马尔可夫性质”表示:下一状态只与当前状态和当前动作有关,与过去的历史无关。
  4. 奖励函数 R ( s t , a t , s t + 1 ) R(s_t, a_t, s_{t+1}) R(st,at,st+1)

    • 执行动作后得到的奖励,可简化成 R ( s , a ) R(s,a) R(s,a) R ( s ) R(s) R(s) 等形式。
  5. 折扣因子 γ ∈ [ 0 , 1 ] \gamma \in [0,1] γ[0,1]

    • 用于平衡短期奖励和长期奖励的权重;
    • 越接近 1,越重视长期效益;越接近 0,越重视眼前奖励。

累计奖励

  • 目标:最大化期望折扣累计回报
    E [ ∑ t = 0 ∞ γ t r t ] \LARGE \mathbb{E}\left[\sum_{t=0}^{\infty} \gamma^t r_t \right] E t=0γtrt
    , 其中 r t r_t rt 是智能体在时间步 t t t 获得的即时奖励。

1.2.2 价值函数与 Q 函数

策略 π \pi π

  • 策略 π \pi π 定义在每个状态 s s s 下,选择动作 a a a 的分布: π ( a ∣ s ) \pi(a|s) π(as)
  • 确定性策略 π ( s ) = a \pi(s) = a π(s)=a,即在状态 s s s 下必然选择动作 a a a
  • 随机策略 π ( a ∣ s ) \pi(a|s) π(as) 是一个概率分布,在状态 s s s 下选择动作 a a a 的概率。

状态价值函数 V π ( s ) V^\pi(s) Vπ(s)

  • 在策略 π \pi π 下,从状态 s s s 出发所能获得的期望折扣累计奖励
    V π ( s ) = E π [ ∑ k = 0 ∞ γ k r t + k | s t = s ] \LARGE V^\pi(s) = \mathbb{E}_\pi \left[ \sum_{k=0}^\infty \gamma^k r_{t+k} \,\middle|\, s_t = s \right] Vπ(s)=Eπ k=0γkrt+k st=s
  • 这表示如果我们始终遵循策略 π \pi π,在状态 s s s 时的预期收益。

动作价值函数 Q π ( s , a ) Q^\pi(s,a) Qπ(s,a)

  • 在策略 π \pi π 下,从状态 s s s 执行动作 a a a 后,所能获得的期望折扣累计奖励:
    Q π ( s , a ) = E π [ ∑ k = 0 ∞ γ k r t + k | s t = s , a t = a ] \LARGE Q^\pi(s,a) = \mathbb{E}_\pi \left[ \sum_{k=0}^\infty \gamma^k r_{t+k} \,\middle|\, s_t = s, a_t=a \right] Qπ(s,a)=Eπ k=0γkrt+k st=s,at=a
  • 也称作 Q 函数动作价值函数

价值函数与策略之间的关系

  1. 状态价值函数与 Q 函数
    V π ( s ) = ∑ a ∈ A π ( a ∣ s ) Q π ( s , a ) \LARGE V^\pi(s) = \sum_{a \in \mathcal{A}} \pi(a|s) \, Q^\pi(s,a) Vπ(s)=aAπ(as)Qπ(s,a)

    • 状态价值是动作价值的加权期望,权重为策略在该状态下选择各动作的概率。
  2. Bellman 期望方程:在策略 π \pi π 下,
    Q π ( s , a ) = R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V π ( s ′ ) \LARGE Q^\pi(s,a) = R(s,a) + \gamma \sum_{s'} P(s'|s,a) V^\pi(s') Qπ(s,a)=R(s,a)+γsP(ss,a)Vπ(s)
    也可写成
    V π ( s ) = ∑ a π ( a ∣ s ) [ R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V π ( s ′ ) ] \LARGE V^\pi(s) = \sum_{a} \pi(a|s) \big[R(s,a) + \gamma \sum_{s'}P(s'|s,a)V^\pi(s')\big] Vπ(s)=aπ(as)[R(s,a)+γsP(ss,a)Vπ(s)]

最优价值函数

  • 最优状态价值函数
    V ∗ ( s ) = max ⁡ π V π ( s ) \LARGE V^*(s) = \max_\pi V^\pi(s) V(s)=πmaxVπ(s)
    即在状态 s s s 下能获得的最高期望回报。
  • 最优 Q 函数
    Q ∗ ( s , a ) = max ⁡ π Q π ( s , a ) \LARGE Q^*(s,a) = \max_\pi Q^\pi(s,a) Q(s,a)=πmaxQπ(s,a)
    即在状态 s s s 执行动作 a a a 后,所能获得的最高期望回报。
  • 对于任何 MDP,都存在一个或多个最优策略 π ∗ \pi^* π,其满足
    Q ∗ ( s , a ) = Q π ∗ ( s , a ) , V ∗ ( s ) = V π ∗ ( s ) \LARGE Q^*(s,a) = Q^{\pi^*}(s,a), \quad V^*(s) = V^{\pi^*}(s) Q(s,a)=Qπ(s,a),V(s)=Vπ(s)

1.3 经典强化学习方法

在传统强化学习领域(未结合深度学习之前),有一些基本且重要的方法,如动态规划、价值迭代、策略迭代,以及以 Q-Learning / SARSA 为代表的时序差分(TD)方法等。这些算法主要针对离散、规模相对较小的状态空间。

1.3.1 动态规划 (Dynamic Programming, DP)

动态规划方法通常要求我们可以完全访问环境的动态模型(即知道转移概率和奖励函数),来进行 规划(planning)。两种典型的 DP 算法为:

1.3.1.1 价值迭代(Value Iteration)

  • Bellman 最优方程:对最优价值函数 V ∗ ( s ) V^*(s) V(s)
    V ∗ ( s ) = max ⁡ a [ R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V ∗ ( s ′ ) ] \LARGE V^*(s) = \max_a \Big[ R(s,a) + \gamma \sum_{s'} P(s'|s,a)\, V^*(s') \Big] V(s)=amax[R(s,a)+γsP(ss,a)V(s)]
  • 价值迭代算法:从一个初始 V V V 开始,在每次迭代对所有状态执行:
    V ( s ) ← max ⁡ a [ R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V ( s ′ ) ] . \LARGE V(s) \leftarrow \max_a \Big[ R(s,a) + \gamma \sum_{s'} P(s'|s,a)\, V(s') \Big]. V(s)amax[R(s,a)+γsP(ss,a)V(s)].
  • V ( s ) V(s) V(s) 收敛后,即得到近似的最优价值函数 V ∗ V^* V。进而可推得最优策略:
    π ∗ ( s ) = arg ⁡ max ⁡ a [ R ( s , a ) + γ ∑ s ′ P ( s ′ ∣ s , a ) V ( s ′ ) ] \LARGE \pi^*(s) = \arg\max_a \Big[ R(s,a) + \gamma \sum_{s'} P(s'|s,a)\, V(s') \Big] π(s)=argamax[R(s,a)+γsP(ss,a)V(s)]

1.3.1.2 策略迭代(Policy Iteration)

  • 分为两个阶段的交替:
    1. 策略评估(Policy Evaluation):在当前策略 π \pi π 下,计算得到 V π V^\pi Vπ
    2. 策略提升(Policy Improvement):基于 V π V^\pi Vπ 来更新得到新策略 π ′ \pi' π,使得期望收益更高。
  • 反复迭代,直到策略不再改变,得到最优策略 π ∗ \pi^* π

动态规划主要缺点在于:它通常需要我们显式知道环境的转移概率 P P P,且状态空间不宜过大,否则枚举计算的开销很大。


1.3.2 Q-Learning 和 SARSA

当环境模型未知或者难以获得时,可以采用**时序差分(Temporal Difference, TD)**的学习方法,直接通过与环境交互的样本来更新价值函数。其中最经典的两个算法是 Q-LearningSARSA。它们都更新 动作价值函数 Q ( s , a ) Q(s,a) Q(s,a),但有一些差异。

1.3.2.1 Q-Learning

  • 目标:学得最优 Q 函数 Q ∗ ( s , a ) Q^*(s,a) Q(s,a),在任意状态下选择 max ⁡ a Q ( s , a ) \max_a Q(s,a) maxaQ(s,a) 即可得到最优动作。
  • 更新规则
    Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ max ⁡ a ′ Q ( s t + 1 , a ′ ) − Q ( s t , a t ) ] \LARGE Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha \Big[r_t + \gamma \max_{a'}Q(s_{t+1},a') - Q(s_t,a_t)\Big] Q(st,at)Q(st,at)+α[rt+γamaxQ(st+1,a)Q(st,at)]
    其中 α \alpha α 为学习率。
  • 离策略(Off-policy)
    • 在实际执行中,Agent 会采用 ϵ \epsilon ϵ-贪心等探索策略选动作,但更新时使用的是 max ⁡ a ′ Q \max_{a'}Q maxaQ 的估计来逼近最优策略。
    • 这种“行为策略”与“目标策略”分离的方式,称为 Off-policy。

1.3.2.2 SARSA

  • 目标:学得“当前策略”本身的 Q 值,而不是最优策略;
  • 更新规则
    Q ( s t , a t ) ← Q ( s t , a t ) + α [ r t + γ Q ( s t + 1 , a t + 1 ) − Q ( s t , a t ) ] \LARGE Q(s_t,a_t) \leftarrow Q(s_t,a_t) + \alpha \Big[r_t + \gamma Q(s_{t+1}, a_{t+1}) - Q(s_t,a_t)\Big] Q(st,at)Q(st,at)+α[rt+γQ(st+1,at+1)Q(st,at)]
    与 Q-Learning 的区别在于,TD 目标中用的动作是实际执行的动作 a t + 1 a_{t+1} at+1,而非 max ⁡ a ′ Q ( s t + 1 , a ′ ) \max_{a'} Q(s_{t+1},a') maxaQ(st+1,a)
  • 同策略(On-policy)
    • SARSA 所学习的策略与行为策略一致,也就是说它估计的是“ ϵ \epsilon ϵ-贪心策略自己”的价值函数。

1.3.2.3 比较

  • Q-Learning 更常用于学习最优策略(若能充分探索),但在某些噪声较大或者需要更保守策略的场景,SARSA 也有其价值,例如在 CliffWalking 环境中,SARSA 往往会学得更保守的路线。

1.3.3 策略梯度(Policy Gradient)概念(概述)

在上述 Q-Learning / SARSA / 动态规划 等方法中,核心思想是先估计价值函数(如 Q ( s , a ) Q(s,a) Q(s,a) V ( s ) V(s) V(s)),然后再通过贪心方式派生或改进策略。
策略梯度 方法则是从直接对策略 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as) 本身进行参数化和梯度优化的角度出发:

  • 参数化策略 π θ ( a ∣ s ) \pi_\theta(a|s) πθ(as),其参数为 θ \theta θ(可用神经网络表示)。
  • 目标:最大化期望回报 J ( θ ) = E π θ [ ∑ γ t r t ] J(\theta) = \mathbb{E}_{\pi_\theta}\left[\sum \gamma^t r_t\right] J(θ)=Eπθ[γtrt]
  • 思想:基于梯度上升,通过 ∇ θ J ( θ ) \nabla_\theta J(\theta) θJ(θ) 的估计来更新 θ \theta θ

这种方法适用于连续动作空间高维动作空间等场景,并且在先进的算法(如 PPO、SAC)中广泛使用。我们在后续章节会深入展开 Policy GradientActor-Critic 算法的完整推导和实现。


总结

在这一阶段,我们系统地介绍了强化学习的 概念基础MDP 理论框架以及 经典强化学习方法(动态规划、Q-Learning、SARSA、策略梯度基础)。核心要点包括:

  1. 强化学习与监督/无监督学习的区别:无正确标签,通过试错最大化累积奖励;
  2. 深度学习在 RL 中的角色:使用神经网络对价值函数或策略函数进行逼近,提高模型对高维复杂数据的处理能力;
  3. MDP 基本要素:状态、动作、转移概率、奖励、折扣因子,重点理解马尔可夫性质;
  4. 价值函数与 Q 函数:状态价值和动作价值是衡量某个策略在不同状态/动作组合下的未来收益预估;
  5. 经典强化学习
    • 动态规划:价值迭代、策略迭代(要求已知环境模型);
    • Q-Learning & SARSA:时序差分方法,通过与环境的交互样本在线学习;
    • 策略梯度概念:直接对策略进行参数化、对期望回报进行梯度优化。

以上内容构成强化学习的“底层框架”,为后续的**深度强化学习(DQN、DDPG、PPO、SAC 等)**打下扎实基础。在后面的学习中,我们会进一步讨论如何利用神经网络来逼近 Q Q Q 函数或策略,并解决各种复杂场景下的控制与决策问题。

相关文章:

一、智能体强化学习——强化学习基础

1.1 强化学习与深度学习的基本概念 1.1.1 强化学习的核心思想 什么是强化学习? 强化学习(Reinforcement Learning, RL):指在与环境(Environment)的反复交互中,智能体(Agent&#x…...

【DES加密】

什么是DES DES(Data Encryption Standard) 是一种对称加密算法。它的设计目标是提供高度的数据安全性和性能。 DES的概念 DES使用56位的密钥和64位的明文块进行加密。DES算法的分组大小是64位,因此,如果需要加密的明文长度不足64位,需要进…...

.NET中的框架和运行环境

在.NET生态系统中,框架和运行环境是两个不同的概念,它们各自扮演着重要的角色。 下面我将分别介绍.NET中的框架和运行环境,并解释它们之间的区别。 .NET 框架(Frameworks) 框架提供了一套预定义的类库、工具和服务&…...

探索微软 M365 安全:全方位守护数字世界

在当今这个科技呈井喷式飞速发展,数字化浪潮以汹涌澎湃、锐不可当之势席卷全球的时代,企业与个人仿若置身于一片浩瀚无垠、信息奔涌的海洋之中,尽情畅享着技术革新所带来的无穷无尽便利。然而,恰如平静海面下潜藏着暗礁与汹涌暗流,网络安全问题恰似隐匿在暗处、随时可能给…...

深入探索AI核心模型:CNN、RNN、GAN与Transformer

在人工智能的飞速发展中,众多深度学习模型和算法不断涌现,推动了许多领域的进步。特别是在图像识别、自然语言处理、生成建模等方向,AI模型的应用越来越广泛。本文将介绍几种最常用的AI模型,包括卷积神经网络(CNN&…...

Java - Http 通讯

Java - Http 通讯 PS&#xff1a; 1. Http 协议 POST | GET 请求&#xff1b; 2. 支持 报头、报文、参数 自定义配置&#xff1b; 3. GET 返回支持 String | Stream; 4. 相关依赖&#xff1a; <dependency><groupId>org.apache.httpcomponents</groupId><…...

C++ Qt练习项目 QChar功能测试

个人学习笔记 代码仓库 GitCode - 全球开发者的开源社区,开源代码托管平台 新建项目 设计UI 1、拖入group box去掉名字 2、拖入2个LineEdit 3、拖入两个Label 4、拖入两个PushButton 5、点栅格布局 1、拖入GroupBox 2、拖入4个PushButton 3、点栅格布局 1、拖入GroupBo…...

android 官网刷机和线刷

nexus、pixel可使用google官网线上刷机的方法。网址&#xff1a;https://flash.android.com/ 本文使用google线上刷机&#xff0c;将Android14 刷为Android12 以下是失败的线刷经历。 准备工作 下载升级包。https://developers.google.com/android/images?hlzh-cn 注意&…...

二叉树层序遍历 Leetcode102.二叉树的层序遍历

二叉树的层序遍历相当于图论的广度优先搜索&#xff0c;用队列来实现 &#xff08;二叉树的递归遍历相当于图论的深度优先搜索&#xff09; 102.二叉树的层序遍历 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右…...

DELTA并联机械手视觉方案荣获2024年度机器人应用典型案例奖

直击现场 2025年1月9日晚&#xff0c;2024深圳市机器人年度评选颁奖典礼在深圳市南山区圣淘沙酒店正式拉开帷幕。本次颁奖活动由中国科学院深圳先进技术研究院指导&#xff0c;深圳市机器人协会与《机器人与智能系统》杂志组织承办。 正运动公司受邀参与此次典礼&#xff0c;…...

Netty 入门学习

前言 学习Spark源码绕不开通信&#xff0c;Spark通信是基于Netty实现的&#xff0c;所以先简单学习总结一下Netty。 Spark 通信历史 最开始: Akka Spark 1.3&#xff1a; 开始引入Netty&#xff0c;为了解决大块数据&#xff08;如Shuffle&#xff09;的传输问题 Spark 1.6&…...

Magentic-One、AutoGen、LangGraph、CrewAI 或 OpenAI Swarm:哪种多 AI 代理框架最好?

目录 一、说明 二、 AutoGen-自动生成&#xff08;微软&#xff09; 2.1 特征 2.2 局限性 三、 CrewAI 3.1 特征 3.2 限制&#xff1a; 四、LangGraph 4.1 特征&#xff1a; 4.2 限制&#xff1a; 五、OpenAI Swarm 5.1 特征 5.2 限制 六、Magentic-One 6.1 特征 6.2 限制 七、…...

openstack下如何生成centos9 centos10 和Ubuntu24 镜像

如何生成一个centos 10和centos 9 的镜像1. 下载 对应的版本 wget https://cloud.centos.org/centos/10-stream/x86_64/images/CentOS-Stream-GenericCloud-x86_64-10-latest.x86_64.qcow2 wget https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-Gener…...

Kivy App开发之UX控件Slider滑块

在app中可能会调节如音量,亮度等,可以使用Slider来实现,该控件调用方便,兼容性好,滑动平稳。在一些参数设置中,也可以用来调整数值。 支持水平和垂直方向,可以设置默认值,最小及最大值。 使用方法,需用引入Slider类,通过Slider类生成一个滑块并设置相关的样式后,再…...

CSS——22.静态伪类(伪类是选择不同元素状态)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>静态伪类</title> </head><body><a href"#">我爱学习</a></body> </html>单击链接前的样式 左键单击&#xff08;且…...

python学opencv|读取图像(三十)使用cv2.getAffineTransform()函数倾斜拉伸图像

【1】引言 前序已经学习了如何平移和旋转缩放图像&#xff0c;相关文章链接为&#xff1a; python学opencv|读取图像&#xff08;二十七&#xff09;使用cv2.warpAffine&#xff08;&#xff09;函数平移图像-CSDN博客 python学opencv|读取图像&#xff08;二十八&#xff0…...

Unity3D中基于ILRuntime的组件化开发详解

前言 在Unity3D开发中&#xff0c;组件化开发是一种高效且灵活的软件架构方式。通过将游戏功能拆分为独立的、可重用的组件&#xff0c;开发者可以更容易地管理、扩展和维护代码。而ILRuntime作为一款基于C#的热更新框架&#xff0c;为Unity3D开发者提供了一种高效的热更新和组…...

ELK的搭建

ELK elk&#xff1a;elasticsearch logstatsh kibana统一日志收集系统 elasticsearch&#xff1a;分布式的全文索引引擎点非关系型数据库,存储所有的日志信息&#xff0c;主和从&#xff0c;最少需要2台 logstatsh&#xff1a;动态的从各种指定的数据源&#xff0c;获取数据…...

国产信创实践(国能磐石服务器操作系统CEOS +东方通TongHttpServer)

替换介绍&#xff1a; 国能磐石服务器操作系统CEOS 对标 Linux 服务器操作系统&#xff08;Ubuntu, CentOS&#xff09; 东方通TongHttpServer 对标 Nginx 负载均衡Web服务器 第一步&#xff1a; 服务器安装CEOS映像文件&#xff0c;可直接安装&#xff0c;本文采用使用VMware …...

C#里使用libxl读取EXCEL文件里的图片并保存出来

有时候需要读取EXCEL里的图片文件, 因为很多用户喜欢使用图片保存在EXCEL里,比如用户保存一些现场整改的图片。 如果需要把这些图片抽取出来,再保存到系统里,就需要读取这些图片数据,生成合适的文件再保存。 在libxl里也提供了这样的方法, 如下: var picType = boo…...

【开源免费】基于SpringBoot+Vue.JS企业级工位管理系统(JAVA毕业设计)

本文项目编号 T 127 &#xff0c;文末自助获取源码 \color{red}{T127&#xff0c;文末自助获取源码} T127&#xff0c;文末自助获取源码 目录 一、系统介绍二、数据库设计三、配套教程3.1 启动教程3.2 讲解视频3.3 二次开发教程 四、功能截图五、文案资料5.1 选题背景5.2 国内…...

美国大学的计算机科学专业排名

美国的计算机科学专业在全球范围内享有盛誉&#xff0c;许多大学在该领域具有卓越的教学和研究实力。以下是根据最新的排名和信息整理的美国计算机科学专业顶尖大学列表&#xff1a; 2025年 U.S. News 美国本科计算机科学专业排名&#xff1a; 斯坦福大学&#xff08;Stanfor…...

机器学习实战——决策树:从原理到应用的深度解析

✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连 ✨ ✨个人主页欢迎您的访问 ✨期待您的三连✨ ​​​ ​​​ ​​ 决策树&#xff08;Decision Tree&#xff09;是一种简单而直观的分类与回归模型&#xff0c;在机器学习中广泛应用。它的…...

开源生成式物理引擎Genesis,可模拟世界万物

这是生成大模型时代 —— 它们能生成文本、图像、音频、视频、3D 对象…… 而如果将所有这些组合到一起&#xff0c;我们可能会得到一个世界&#xff01; 现在&#xff0c;不管是 LeCun 正在探索的世界模型&#xff0c;还是李飞飞想要攻克的空间智能&#xff0c;又或是其他研究…...

kubernetes第七天

1.影响pod调度的因素 nodeName 节点名 resources 资源限制 hostNetwork 宿主机网络 污点 污点容忍 Pod亲和性 Pod反亲和性 节点亲和性 2.污点 通常是作用于worker节点上&#xff0c;其可以影响pod的调度 语法&#xff1a;key[value]:effect effect:[ɪˈfek…...

RK3588上CPU和GPU算力以及opencv resize的性能对比测试

RK3588上CPU和GPU算力以及opencv resize的性能对比测试 一.背景二.小结三.相关链接四.操作步骤1.环境搭建A.安装依赖B.设置GPU为高性能模式C.获取GPU信息D.获取CPU信息 2.调用OpenCL SDK获取GPU信息3.使用OpenCL API计算矩阵乘4.使用clpeak测试GPU的性能5.使用OpenBLAS测试CPU的…...

基于Centos 7系统的安全加固方案

创作不易&#xff0c;麻烦点个免费的赞和关注吧&#xff01; 声明&#xff01; 免责声明&#xff1a;本教程作者及相关参与人员对于任何直接或间接使用本教程内容而导致的任何形式的损失或损害&#xff0c;包括但不限于数据丢失、系统损坏、个人隐私泄露或经济损失等&#xf…...

IT行业的发展趋势

一、引言 IT&#xff08;信息技术&#xff09;行业自诞生以来&#xff0c;就以惊人的速度发展&#xff0c;不断改变着我们的生活、工作和社会结构。如今&#xff0c;随着技术的持续创新、市场需求的演变以及全球经济格局的变化&#xff0c;IT行业正迈向新的发展阶段&#xff0…...

《探秘开源多模态神经网络模型:AI 新时代的万能钥匙》

《探秘开源多模态神经网络模型&#xff1a;AI 新时代的万能钥匙》 一、多模态模型的崛起之路&#xff08;一&#xff09;从单一到多元&#xff1a;模态的融合演进&#xff08;二&#xff09;关键技术突破&#xff1a;解锁多模态潜能 二、开源多模态模型深度剖析&#xff08;一&…...

ROS核心概念解析:从Node到Master,再到roslaunch的全面指南

Node 在ROS中&#xff0c;最小的进程单元就是节点&#xff08;node&#xff09;。一个软件包里可以有多个可执行文件&#xff0c;可执行文件在运行之后就成了一个进程(process)&#xff0c;这个进程在ROS中就叫做节点。 从程序角度来说&#xff0c;node就是一个可执行文件&…...

做网站 怎么做留言/百度新闻最新消息

package cn.TCP;import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket;/*** 模拟多个客户端登陆 双向* 1.指定端口 使用ServerSocket创建服务器* 2.阻塞式等待连接accept* 3.…...

建设企业网站找谁/打开百度网站

写在前面本文目的不是教你如何成为一个真正的Linuxer也没有能力教你成为一个真正的linuxer而是通过笔者的一些想法试图指引你真正踏上学习linux之路成为一个真正意义的在路上的linuxer这有什么区别&#xff1f;是的一个成熟的Linuxer能够游走于表面的命令提示符与内部代码细节实…...

wordpress评论显示ua/百度电话客服24小时人工服务热线

spring源码阅读环境(几分钟下载包)简述&#xff1a; 1.下载spring源码&#xff1a; 2.安装gradle&#xff1a; 3.构建源码&#xff1a; 4.导入idea:简述&#xff1a;不能忍受慢(看到这里你就准备笑吧&#xff01;&#xff01;)其他大神的博客实在让我难受自己动手&#xff0c;下…...

网站建设收入的发票/网络营销案例范文

创建类的对象 类的实例化 实例化类 类和对象的使用&#xff08;面向对象思想落地的实现&#xff09;&#xff1a; 1.创建类&#xff0c;设计类的成员 2.创建类的对象 3.通过“对象.属性”或“对象.方法”调用对象的结构 如果创建了一个类的多个对象&#xff0c;则每个对象…...

泉州市建设工程质量监督站网站/关键词优化seo外包

图片替换主要是指将文字替换成图片的技术&#xff0c;即在html语句中使用文字&#xff0c;浏览器显示时用对应的图片显示。其意义在于便于做网站优化&#xff08;SEO&#xff09;&#xff0c;因为文字才是搜索引擎寻找的主要对象。 https://www.cnblogs.com/wmhuang/p/image_ch…...

notepad做网站/百度资源搜索

支持豆丁百度文库道客巴巴免下载劵财富值导出word 下载地址&#xff1a; http://pan.baidu.com/s/1qYCmQde 转载于:https://www.cnblogs.com/dinphy/p/6228018.html...