Pytorch深度强化学习1-3:策略评估与贝尔曼期望方程详细推导

目录

  • 0 专栏介绍
  • 1 从一个例子出发
  • 2 回报与奖赏
  • 3 策略评估函数
  • 4 贝尔曼期望方程
  • 5 收敛性证明

0 专栏介绍

本专栏重点介绍强化学习技术的数学原理,并且采用Pytorch框架对常见的强化学习算法、案例进行实现,帮助读者理解并快速上手开发。同时,辅以各种机器学习、数据处理技术,扩充人工智能的底层知识。

🚀详情:《Pytorch深度强化学习》


1 从一个例子出发

例1:如图所示的真空吸尘器世界只有两个地点:方格A和B。假设吸尘器Agent的传感器可以感知自身处于哪个方格中,以及方格中是否有灰尘;它具有且仅具有左移、右移、吸尘或什么也不做四种行为;假设吸尘器Agent采用的策略是若当前所在地点有灰尘则进行清洁,否则往另一个地点运动。请用马尔科夫决策过程表示吸尘器问题

在这里插入图片描述

如图所示即为例1的一种马尔科夫决策过程,其设计思路是:只要采取移动就会造成一定的损失,在有灰尘的方格中若智能体不采取吸尘则会造成严重的损失。朴素地,最优策略在当前方格有灰尘时选择“吸尘”直至清扫干净,在当前方格无灰尘时选择“移动”进行巡查或“什么也不做”节省能源

在这里插入图片描述

那么问题来了,智能体要如何决策才能使其长期运行下去得到的奖励最多呢? 这就是本文要讨论的策略评估问题

2 回报与奖赏

强化学习的目标是找到一个策略

π ( s , a ) = P ( a c t i o n = a ∣ s t a t e = s ) \pi \left( s,a \right) =P\left( \mathrm{action}=a|\mathrm{state}=s \right) π(s,a)=P(action=astate=s)

使智能体长期执行该策略后得到的回报(Return)最大化。自然地,需要定义回报与策略评估的计算方法。引入回报函数:

  • T T T步回报函数

R t = 1 T ∑ i = t + 1 T r i R_t=\frac{1}{T}\sum_{i=t+1}^T{r_i} Rt=T1i=t+1Tri

  • γ \gamma γ折扣回报函数

R t = ∑ i = t + 1 ∞ γ i − t r i R_t=\sum_{i=t+1}^{\infty}{\gamma ^{i-t}r_i} Rt=i=t+1γitri

其中 R t R_t Rt是从 t t t时刻状态 s t s_t st开始计算的回报,当执行某动作转移到下一个状态时产生第一个奖赏,因此从 t + 1 t+1 t+1时刻开始求和。 r i r_i ri是第 i i i步的单步奖赏,是一个随机变量。迭代因子 T ⩾ 1 T\geqslant 1 T1与折扣因子 γ < 1 \gamma <1 γ<1都对奖赏期望序列进行加权,在数学上使级数收敛。在物理意义上, T T T γ \gamma γ越大表示考虑决策的长期回报; T T T γ \gamma γ越小表示考虑决策的短期收益。特别地,当 T = 1 T=1 T=1 γ = 0 \gamma=0 γ=0表示单步强化学习任务。

3 策略评估函数

策略评估函数分为两种

  • 状态值函数 V π ( s ) V^{\pi}\left( s \right) Vπ(s)
    表示从 t t t时刻状态 s s s出发,采用策略 π \pi π带来的回报期望
    { V T π ( s ) = E [ R t ] ∣ s t = s = 1 T ∑ i = t + 1 T E [ r i ] ∣ s t = s V γ π ( s ) = E [ R t ] ∣ s t = s = ∑ i = t + 1 ∞ γ i − t E [ r i ] ∣ s t = s \begin{cases} V_{T}^{\pi}\left( s \right) =\mathbb{E} \left[ R_t \right] \mid_{s_t=s}^{}=\frac{1}{T}\sum_{i=t+1}^T{\mathbb{E} \left[ r_i \right] \mid_{s_t=s}^{}}\\ V_{\gamma}^{\pi}\left( s \right) =\mathbb{E} \left[ R_t \right] \mid_{s_t=s}^{}=\sum_{i=t+1}^{\infty}{\gamma ^{i-t}\mathbb{E} \left[ r_i \right] \mid_{s_t=s}^{}}\\\end{cases} {VTπ(s)=E[Rt]st=s=T1i=t+1TE[ri]st=sVγπ(s)=E[Rt]st=s=i=t+1γitE[ri]st=s
  • 状态动作值函数 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a)
    表示从 t t t时刻状态 s s s出发,执行动作 a a a后再采用策略 π \pi π带来的回报期望
    { Q T π ( s , a ) = E [ R t ] ∣ s t = s , a t = a = 1 T ∑ i = t + 1 T E [ r i ] ∣ s t = s , a t = a Q γ π ( s , a ) = E [ R t ] ∣ s t = s , a t = a = ∑ i = t + 1 ∞ γ i − t E [ r i ] ∣ s t = s , a t = a \begin{cases} Q_{T}^{\pi}\left( s,a \right) =\mathbb{E} \left[ R_t \right] \mid_{s_t=s,a_t=a}^{}=\frac{1}{T}\sum_{i=t+1}^T{\mathbb{E} \left[ r_i \right] \mid_{s_t=s,a_t=a}^{}}\\ Q_{\gamma}^{\pi}\left( s,a \right) =\mathbb{E} \left[ R_t \right] \mid_{s_t=s,a_t=a}^{}=\sum_{i=t+1}^{\infty}{\gamma ^{i-t}\mathbb{E} \left[ r_i \right] \mid_{s_t=s,a_t=a}^{}}\\\end{cases} {QTπ(s,a)=E[Rt]st=s,at=a=T1i=t+1TE[ri]st=s,at=aQγπ(s,a)=E[Rt]st=s,at=a=i=t+1γitE[ri]st=s,at=a

其中 s t s_t st表示评估的初始状态, a t a_t at表示在初始状态上采取的第一个动作

下面研究 V π ( s ) V^{\pi}\left( s \right) Vπ(s) Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a)的关系。根据全概率公式,状态值函数 V π ( s ) V^{\pi}\left( s \right) Vπ(s)可用状态动作值函数 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a)加权得到

V π ( s ) = ∑ a ∈ A P ( a ∣ s ) Q π ( s , a ) = ∑ a ∈ A π ( s , a ) Q π ( s , a ) V^{\pi}\left( s \right) =\sum_{a\in A}{P\left( a|s \right) Q^{\pi}\left( s,a \right)}={\sum_{a\in A}{\pi \left( s,a \right) Q^{\pi}\left( s,a \right)}} Vπ(s)=aAP(as)Qπ(s,a)=aAπ(s,a)Qπ(s,a)

T T T步回报函数为例说明 Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a)如何用 V π ( s ) V^{\pi}\left( s \right) Vπ(s)表示

Q T π ( s , a ) = 1 T ∑ i = t + 1 T E [ r i ] ∣ s t = s , a t = a = 1 T [ E [ r t + 1 ] ∣ s t = s , a t = a + ∑ i = t + 2 T E [ r i ] ∣ s t = s , a t = a ] = 1 T [ ∑ s ′ ∈ S P s → s ′ a R s → s ′ a + ∑ s ′ ∈ S P s → s ′ a ∑ i = t + 2 T E [ r i ] ∣ s t + 1 = s ′ ] = ∑ s ′ ∈ S P s → s ′ a [ 1 T R s → s ′ a + T − 1 T 1 T − 1 ∑ i = t + 1 T − 1 E [ r i ] ∣ s t = s ′ ] \begin{aligned}Q_{T}^{\pi}\left( s,a \right) &=\frac{1}{T}\sum_{i=t+1}^T{\mathbb{E} \left[ r_i \right]}\mid_{s_t=s,a_t=a}^{}\\&=\frac{1}{T}\left[ \mathbb{E} \left[ r_{t+1} \right] \mid_{s_t=s,a_t=a}^{}+\sum_{i=t+2}^T{\mathbb{E} \left[ r_i \right] \mid_{s_t=s,a_t=a}^{}} \right] \\&=\frac{1}{T}\left[ \sum_{s'\in S}{P_{s\rightarrow s'}^{a}}R_{s\rightarrow s'}^{a}+\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\sum_{i=t+2}^T{\mathbb{E} \left[ r_i \right] \mid_{s_{t+1}=s'}^{}} \right] \\&=\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ \frac{1}{T}R_{s\rightarrow s'}^{a}+\frac{T-1}{T}\frac{1}{T-1}\sum_{i=t+1}^{T-1}{\mathbb{E} \left[ r_i \right] \mid_{s_t=s'}^{}} \right]\end{aligned} QTπ(s,a)=T1i=t+1TE[ri]st=s,at=a=T1[E[rt+1]st=s,at=a+i=t+2TE[ri]st=s,at=a]=T1[sSPssaRssa+sSPssai=t+2TE[ri]st+1=s]=sSPssa[T1Rssa+TT1T11i=t+1T1E[ri]st=s]

Q T π ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ 1 T R s → s ′ a + T − 1 T V T − 1 π ( s ′ ) ] {Q_{T}^{\pi}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ \frac{1}{T}R_{s\rightarrow s'}^{a}+\frac{T-1}{T}V_{T-1}^{\pi}\left( s' \right) \right] } QTπ(s,a)=sSPssa[T1Rssa+TT1VT1π(s)]

同理有

Q γ π ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V γ π ( s ′ ) ] {Q_{\gamma}^{\pi}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V_{\gamma}^{\pi}\left( s' \right) \right] } Qγπ(s,a)=sSPssa[Rssa+γVγπ(s)]

4 贝尔曼期望方程

策略评估是给定一个策略 π \pi π计算策略评估函数 V π ( s ) V^{\pi}\left( s \right) Vπ(s) Q π ( s , a ) Q^{\pi}\left( s,a \right) Qπ(s,a)的过程,用于衡量策略的好坏。策略评估通常采用迭代法而非第三节中的定义计算

根据强化学习任务的马尔科夫性,多步强化学习中的某一步仅与上一步的状态和动作有关,将第三节的式子

  • V π ( s ) = ∑ a ∈ A P ( a ∣ s ) Q π ( s , a ) = ∑ a ∈ A π ( s , a ) Q π ( s , a ) V^{\pi}\left( s \right) =\sum_{a\in A}{P\left( a|s \right) Q^{\pi}\left( s,a \right)}={\sum_{a\in A}{\pi \left( s,a \right) Q^{\pi}\left( s,a \right)}} Vπ(s)=aAP(as)Qπ(s,a)=aAπ(s,a)Qπ(s,a)

  • Q γ π ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V γ π ( s ′ ) ] {Q_{\gamma}^{\pi}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V_{\gamma}^{\pi}\left( s' \right) \right] } Qγπ(s,a)=sSPssa[Rssa+γVγπ(s)]

互相代入,即可推导出强化学习的贝尔曼递推公式(Bellman Equation)或称贝尔曼期望方程,如下

{ V γ π ( s ) = ∑ a ∈ A π ( s , a ) ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ V γ π ( s ′ ) ] Q γ π ( s , a ) = ∑ s ′ ∈ S P s → s ′ a [ R s → s ′ a + γ ∑ a ′ ∈ A π ( s ′ , a ′ ) Q γ π ( s ′ , a ′ ) ] {\begin{cases} V_{\gamma}^{\pi}\left( s \right) =\sum_{a\in A}{\pi \left( s,a \right)}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma V_{\gamma}^{\pi}\left( s' \right) \right]\\ Q_{\gamma}^{\pi}\left( s,a \right) =\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ R_{s\rightarrow s'}^{a}+\gamma \sum_{a'\in A}{\pi \left( s',a' \right) Q_{\gamma}^{\pi}\left( s',a' \right)} \right]\\\end{cases}} {Vγπ(s)=aAπ(s,a)sSPssa[Rssa+γVγπ(s)]Qγπ(s,a)=sSPssa[Rssa+γaAπ(s,a)Qγπ(s,a)]

5 收敛性证明

上述迭代公式属于不动点方程。设贝尔曼期望算子为 B π \mathcal{B} ^{\pi} Bπ,则

∣ ( B π V 1 π ) ( s ) − ( B π V 2 π ) ( s ) ∣ = ∣ γ ∑ a ∈ A π ( s , a ) ∑ s ′ ∈ S P s → s ′ a [ V 1 π ( s ′ ) − V 2 π ( s ′ ) ] ∣ ⩽ γ ∑ a ∈ A π ( s , a ) ∑ s ′ ∈ S P s → s ′ a ∣ V 1 π ( s ′ ) − V 2 π ( s ′ ) ∣    绝对值不等式 ⩽ γ ∑ a ∈ A π ( s , a ) ∑ s ′ ∈ S P s → s ′ a [ max ⁡ s ′ ′ ∣ V 1 π ( s ′ ′ ) − V 2 π ( s ′ ′ ) ∣ ] = γ ∥ V 1 π ( s ) − V 2 π ( s ) ∥ ∞ \begin{aligned}\left| \left( \mathcal{B} ^{\pi}V_{1}^{\pi} \right) \left( s \right) -\left( \mathcal{B} ^{\pi}V_{2}^{\pi} \right) \left( s \right) \right|&=\left| \gamma \sum_{a\in A}{\pi \left( s,a \right)}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ V_{1}^{\pi}\left( s' \right) -V_{2}^{\pi}\left( s' \right) \right] \right|\\&\leqslant \gamma \sum_{a\in A}{\pi \left( s,a \right)}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left| V_{1}^{\pi}\left( s' \right) -V_{2}^{\pi}\left( s' \right) \right|\,\, {\text{绝对值不等式}}\\&\leqslant \gamma \sum_{a\in A}{\pi \left( s,a \right)}\sum_{s'\in S}{P_{s\rightarrow s'}^{a}}\left[ \underset{s''}{\max}\left| V_{1}^{\pi}\left( s'' \right) -V_{2}^{\pi}\left( s'' \right) \right| \right] \\&=\gamma \left\| V_{1}^{\pi}\left( s \right) -V_{2}^{\pi}\left( s \right) \right\| _{\infty}\end{aligned} (BπV1π)(s)(BπV2π)(s)= γaAπ(s,a)sSPssa[V1π(s)V2π(s)] γaAπ(s,a)sSPssaV1π(s)V2π(s)绝对值不等式γaAπ(s,a)sSPssa[s′′maxV1π(s′′)V2π(s′′)]=γV1π(s)V2π(s)

上述不等式对 ∀ s ∈ S \forall s\in S sS都成立,不妨取

s = a r g max ⁡ s ∣ ( B π V 1 π ) ( s ) − ( B π V 2 π ) ( s ) ∣ s=\mathrm{arg}\max _s\left| \left( \mathcal{B} ^{\pi}V_{1}^{\pi} \right) \left( s \right) -\left( \mathcal{B} ^{\pi}V_{2}^{\pi} \right) \left( s \right) \right| s=argsmax(BπV1π)(s)(BπV2π)(s)

∣ ( B π V 1 π ) ( s ) − ( B π V 2 π ) ( s ) ∣ ∞ ⩽ γ ∥ V 1 π ( s ) − V 2 π ( s ) ∥ ∞ \left| \left( \mathcal{B} ^{\pi}V_{1}^{\pi} \right) \left( s \right) -\left( \mathcal{B} ^{\pi}V_{2}^{\pi} \right) \left( s \right) \right|_{\infty}\leqslant \gamma \left\| V_{1}^{\pi}\left( s \right) -V_{2}^{\pi}\left( s \right) \right\| _{\infty} (BπV1π)(s)(BπV2π)(s)γV1π(s)V2π(s)

所以 B π \mathcal{B} ^{\pi} Bπ是一个压缩映射,根据巴拿赫不动点定理,映射 B π \mathcal{B} ^{\pi} Bπ存在唯一的不动点 。换言之,若需要求解状态值函数 V π ( s ) V^{\pi}\left( s \right) Vπ(s),可以任取一个值 V 0 π ( s ) V_{0}^{\pi}\left( s \right) V0π(s)进行迭代,最终收敛到正确的 V π ( s ) V^{\pi}\left( s \right) Vπ(s)

lim ⁡ k → ∞ ( B π ) k V 0 π = V π \lim _{k\rightarrow \infty}\left( \mathcal{B} ^{\pi} \right) ^kV_{0}^{\pi}=V^{\pi} klim(Bπ)kV0π=Vπ

这就是强化学习中策略评估的理论保证


🔥 更多精彩专栏

  • 《ROS从入门到精通》
  • 《Pytorch深度学习实战》
  • 《机器学习强基计划》
  • 《运动规划实战精讲》

👇源码获取 · 技术交流 · 抱团学习 · 咨询分享 请联系👇

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/37894.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

油猴脚本-Bilibili剧场模式仿Youtube

对比某个不存在的视频网站&#xff08;YouTube&#xff09;&#xff0c;以及B站的播放模式&#xff0c;普通模式以及网页全屏之间都有一个“中间档”&#xff0c;油管的叫 剧场模式&#xff0c;B站的叫 宽屏模式。 剧场模式 宽屏模式 相比之下&#xff0c;还是更喜欢油管的剧…

高并发的哲学原理(六)-- 拆分网络单点(下):SDN 如何替代百万人民币的负载均衡硬件

上一篇文章的末尾&#xff0c;我们利用负载均衡器打造了一个五万 QPS 的系统&#xff0c;本篇文章我们就来了解一下负载均衡技术的发展历程&#xff0c;并一起用 SDN&#xff08;软件定义网络&#xff09;技术打造出一个能够扛住 200Gbps 的负载均衡集群。 负载均衡发展史 F5 …

网络协议与攻击模拟-17-DNS协议-报文格式

二、DNS 查询 客户机想要访问www.baidu.com&#xff0c;根据自己的 TCP / IP 参数&#xff0c;向自己的首选 DNS 服务器发送 DNS 请求 首选 DNS 收到客户机的请求后&#xff0c;会去查询自己的区域文件&#xff0c;找不到www.baidu.com的 IP 地址信息&#xff08;将请求转发到…

【论文阅读】TransCAM: Transformer Attention-based CAM Refinement for WSSS

分享一篇阅读的用于弱监督分割的论文 论文标题&#xff1a; TransCAM: Transformer Attention-based CAM Refinement for Weakly Supervised Semantic Segmentation 作者信息&#xff1a; 代码地址&#xff1a; https://github.com/liruiwen/TransCAM Abstract 大多数现有…

mybatis双重foreach实现遍历map中的两个list数组

文章目录 实现背景&#xff1a;前端传值的格式Debug断点调试java如何解析json对象第一步 JSONArray.fromObject()第二步 遍历jsonArray第三步 mybatis双重foreach foreach标签说明最终效果 实现背景&#xff1a; 前端传值时可能会有多个字段传递过来&#xff0c;需要后台将这多…

SpringBoot快速实践 --Ⅰ

文章目录 启动一个SpringBoot项目如何替换内嵌容器玩转SpringBoot配置全局异常处理过滤器拦截器使用Lombok简洁代码使用IDEA HTTP Client进行接口调试 启动一个SpringBoot项目 如果你觉得使用官网来创建太慢了&#xff0c;那你直接把以前项目的依赖粘过来就行了&#xff1a; …

《银行法律法规》三、银行管理——2、公司治理、 内部控制与合规管理

第二章 公司治理、 内部控制与合规管理 第一节 公司治理 考点1 银行公司治理概述★★ 商业银行公司治理是指股东大会、 董事会、 监事会、 高级管理层、 股东及其他利益相关者之间的相互关系&#xff0c; 包括组织架构、 职责边界、 履职要求等治理制衡机制&#xff0c; 以…

【原生HTML+SpringBoot】电子病历编辑器源码

一、简介 本系统主要面向医院医生、护士&#xff0c;提供对住院病人的电子病历书写、保存、修改、打印等功能。本系统基于云端SaaS服务方式&#xff0c;通过浏览器方式访问和使用系统功能&#xff0c;提供电子病历在线制作、管理和使用的一体化电子病历解决方案&#x…

【hadoop】部署hadoop的本地模式

hadoop的本地模式 本地模式的特点部署本地模式测试本地模式是否部署完成 本地模式的特点 没有HDFS、也没有Yarn只能测试MapReduce程序&#xff0c;作为一个普通的Java程序处理的数据是本地Linux的文件一般用于开发和测试 部署本地模式 进入该路径 /root/training/hadoop-2.7…

Ceres Solver简介及使用

Ceres Solver是一个开源的C库&#xff0c;用于建模和解决大型、复杂的优化问题。它是一个成熟、功能丰富且高性能的库&#xff0c;自2010年以来一直在Google生产中使用。最新发布版本为2.1.0,license为BSD,它支持在Windows、Linux、Mac、Android、iOS上编译&#xff0c;源码地址…

TortoiseGit的安装和使用

1、TortoiseGit的下载安装 安装说明:因为TortoiseGit 只是一个程序壳,必须依赖一个 Git Core,所以安装前请确定已完成git安装和配置。 TortoiseGit下载地址 https://download.tortoisegit.org/tgit/ ,最新稳定版本2.11.0.0。 点进去下载程序包和语言包(非必须),安装时…

在 3ds Max 中使用Mental Ray渲染 wip 图像

推荐&#xff1a; NSDT场景编辑器助你快速搭建可二次开发的3D应用场景 本教程面向初学者&#xff0c;每个步骤都详细概述和显示。如果您是 3D Studio MAX 的新手&#xff0c;您可能想先尝试我们的其他一些教程。 使用默认的 3D Studio MAX 渲染器创建粘土渲染 步骤 1 在 3D S…

实战:Springboot集成Sentinel实现流量控制、熔断降级、负载保护

文章目录 前言知识积累流量控制负载保护熔断降级官方文档 实战演练部署sentinel-dashboard直接jar包部署docker-compose编排 springboot集成sentinel基础架构搭建sentinel控制台sentinel验证 延伸&#xff1a;系统自适应限流系统规则原理配置页面 写在最后 前言 前面的文章我们…

Flutter:架构概览

概览 Flutter本质上是一个跨平台的UI工具集&#xff0c;允许在各自操作系统上复用同样的代码。 尽可能提供原生体验的高性能和复用代码。 开发中&#xff0c;Flutter应用在一个VM上运行&#xff0c;使得可在保留状态且无需重新编译情况下&#xff0c;进行热加载。 发行时&…

chrome插件reading-time开发

本插件开发文档翻译于Google官方文档Chrome Extensions Tutorial: Reading time - Chrome Developers 一、reading-time reading-time项目的功能是 将预期的阅读时间添加到任何Chrome extension 和 Chrome Web Store documentation 页面里面 通过这个项目&#xff0c;我们可以…

网络套接字编程(三)(HTTP)

gitee仓库&#xff1a;https://gitee.com/WangZihao64/linux/tree/master/CalTcp 一、重谈协议 协议是一种“约定”&#xff0c;这种约定是双方都知道的。有了一致的约定&#xff0c;双方才能够正常地进行通信。协议在网络的第一篇博客中也提到过&#xff0c;协议是双方进行通…

图像增广:强化深度学习的视觉表现力

目录 摘要&#xff1a; 1. 图像增广简介 2. 图像增广的原理 3. 常见的图像增广技术 4. 如何在实际项目中应用图像增广 5.实际应用 摘要&#xff1a; 当今&#xff0c;深度学习已经在计算机视觉领域取得了令人瞩目的成就。图像增广作为一种数据处理技术&#xff0c;让我们…

一.CreateFileMapping实现的共享内存及用法

共享内存概念 1.在32位的Windows系统中&#xff0c;每一个进程都有权访问他自己的4GB&#xff08;2324294967296&#xff09;平面地址空间&#xff0c;没有段&#xff0c;没有选择符&#xff0c;没有near和far指针&#xff0c;没有near和far函数调用&#xff0c;也没有内存模式…

修改npm路径

npm config ls如果是第一次使用NPM安装包的话&#xff0c;在配置中只会看到prefix的选项&#xff0c;就是NPM默认的全局安装目录。但是如果有多次使用NPM安装包的话&#xff0c;就会看到cache和prefix两个路径。 新建两个文件夹node_global_modules和node_cache npm config s…

【CesiumJS入门】(7)绘制多段线(动态实时画线)

前言 鼠标左键添加点、右键完成绘制,单击右侧弹窗关闭按钮清空绘制。参考沙盒示例&#xff1a;Drawing on Terrain 直接上代码了 /** Date: 2023-07-12 18:47:18* LastEditors: ReBeX 420659880qq.com* LastEditTime: 2023-07-16 16:26:19* FilePath: \cesium-tyro-blog\s…