机器学习笔记之深度信念网络(一)背景介绍与模型表示

news2024/11/17 15:42:27

机器学习笔记之深度信念网络——背景介绍与模型表示

  • 引言
    • 深度信念网络
      • 场景构建
      • 深度信念网络的联合概率分布

引言

从本节开始,将介绍深度信念网络

深度信念网络

深度信念网络(Deep Belief Network,DBN)是杰弗里·辛顿(Geoffrey Hinton)于2006年提出的模型,并正式提出了深度学习的概念。
在当时,将深度信念网络应用在分类问题中,其超过了当时主流的支持向量机 + 核技巧的分类效果。

在Sigmoid信念网络中介绍过,信念网络指的就是贝叶斯网络,也就是有向图模型
但实际上,和 Sigmoid \text{Sigmoid} Sigmoid信念网络不同,深度信念网络是一个混合模型(Hybrid Model):
深度信念网络——示例

其中, v v v表示观测变量所在层(输入部分), h ( 1 ) , h ( 2 ) , h ( 3 ) h^{(1)},h^{(2)},h^{(3)} h(1),h(2),h(3)分别表示不同隐藏层对应的编号。从上图中可以看出, v ( 1 ) , h ( 1 ) , h ( 2 ) v^{(1)},h^{(1)},h^{(2)} v(1),h(1),h(2)三层明显是一个 Sigmoid \text{Sigmoid} Sigmoid信念网络;而 h ( 2 ) , h ( 3 ) h^{(2)},h^{(3)} h(2),h(3)两层则是受限玻尔兹曼机(Restricted Boltzmann Machine,RBM)。
当然这里仅描述了一层受限玻尔兹曼机和一层 Sigmoid \text{Sigmoid} Sigmoid信念网络的组合现象,实际上可以通过对受限玻尔兹曼机的堆叠(Stacking RBM)向更深层次进行延伸。
并且它也是一个基于深度学习概率生成模型,它对应的数据同样是不包含标签信息的。至此,观察一下该模型的定义

场景构建

为了更好地描述定义,我们对各符号进行设定

  • 各层之间的权重信息(图中的红色虚线部分)分别使用 W ( 1 ) , W ( 2 ) , W ( 3 ) \mathcal W^{(1)},\mathcal W^{(2)},\mathcal W^{(3)} W(1),W(2),W(3)进行表示;
  • 深度信念网络中每一层均包含偏置项信息,定义从 v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) v^{(1)},h^{(1)},h^{(2)},h^{(3)} v(1),h(1),h(2),h(3)顺序对应的偏置分别表示为 b ( 0 ) , b ( 1 ) , b ( 2 ) , b ( 3 ) b^{(0)},b^{(1)},b^{(2)},b^{(3)} b(0),b(1),b(2),b(3)(图中的绿色部分);
  • 由于上标已经被占用,因此这里不同于之前对于样本的定义 v ( i ) ∈ V ( i = 1 , 2 , ⋯   , N ) v^{(i)} \in \mathcal V(i=1,2,\cdots,N) v(i)V(i=1,2,,N),这里仅使用 v ∈ V v \in \mathcal V vV来描述样本集合 V \mathcal V V中的某一各具体样本

深度信念网络的联合概率分布

上述示例中描述的所有结点均是随机变量,并且除了观测变量是样本集合给定的之外,其余所有变量均是隐变量。其分布和玻尔兹曼机受限玻尔兹曼机 Sigmoid \text{Sigmoid} Sigmoid信念网络相同,所有随机变量均服从伯努利分布
这里直接使用 v ( 1 ) v^{(1)} v(1)表示观测变量层中的所有随机变量结点组成的集合,其余层均同理。 D \mathcal D D表示观测变量结点的数量。
v ( 1 ) = { v 1 ( 1 ) , v 2 ( 1 ) , ⋯   , v D ( 1 ) } ∈ { 0 , 1 } D v^{(1)} = \left\{v_1^{(1)},v_2^{(1)},\cdots, v_{\mathcal D}^{(1)}\right\} \in \{0,1\}^{\mathcal D} v(1)={v1(1),v2(1),,vD(1)}{0,1}D

至此,示例中所有随机变量(隐变量、观测变量)的联合概率分布可表示为:
将观测变量、隐变量分开。
P ( v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ) = P ( v ( 1 ) ∣ h ( 1 ) , h ( 2 ) , h ( 3 ) ) ⋅ P ( h ( 1 ) , h ( 2 ) , h ( 3 ) ) \begin{aligned} \mathcal P(v^{(1)},h^{(1)},h^{(2)},h^{(3)}) & = \mathcal P(v^{(1)} \mid h^{(1)},h^{(2)},h^{(3)}) \cdot \mathcal P(h^{(1)},h^{(2)},h^{(3)}) \\ \end{aligned} P(v(1),h(1),h(2),h(3))=P(v(1)h(1),h(2),h(3))P(h(1),h(2),h(3))

  • 通过观察,观测变量集合 v ( 1 ) v^{(1)} v(1)仅和隐变量集合 h ( 1 ) h^{(1)} h(1)相关,和其他隐变量集合 h ( 2 ) , h ( 3 ) h^{(2)},h^{(3)} h(2),h(3)之间条件独立。因此,可以将上式化简为:
    这明显是‘贝叶斯网络’中的顺序结构:在 h ( 1 ) h^{(1)} h(1)可观测的条件下, v ( 1 ) v^{(1)} v(1) h ( 2 ) , h ( 3 ) h^{(2)},h^{(3)} h(2),h(3)之间条件独立。
    P ( v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ) = P ( v ( 1 ) ∣ h ( 1 ) ) ⋅ P ( h ( 1 ) , h ( 2 ) , h ( 3 ) ) \mathcal P(v^{(1)},h^{(1)},h^{(2)},h^{(3)}) = \mathcal P(v^{(1)} \mid h^{(1)}) \cdot \mathcal P(h^{(1)},h^{(2)},h^{(3)}) P(v(1),h(1),h(2),h(3))=P(v(1)h(1))P(h(1),h(2),h(3))
    同理,关于联合概率分布 P ( h ( 1 ) , h ( 2 ) , h ( 3 ) ) P(h^{(1)},h^{(2)},h^{(3)}) P(h(1),h(2),h(3)) h ( 1 ) h^{(1)} h(1)仅和 h ( 2 ) h^{(2)} h(2)之间存在关联关系。因而它的联合概率分布可表示为:
    此时,不同于 v ( 1 ) v^{(1)} v(1) h ( 1 ) h^{(1)} h(1)之间的关联关系,此时的模型结构是‘混合模型’,但是对条件独立性并不影响。
    P ( h ( 1 ) , h ( 2 ) , h ( 3 ) ) = P ( h ( 1 ) ∣ h ( 2 ) , h ( 3 ) ) ⋅ P ( h ( 2 ) , h ( 3 ) ) = P ( h ( 1 ) ∣ h ( 2 ) ) ⋅ P ( h ( 2 ) , h ( 3 ) ) \begin{aligned} \mathcal P(h^{(1)},h^{(2)},h^{(3)}) & = \mathcal P(h^{(1)} \mid h^{(2)},h^{(3)}) \cdot \mathcal P(h^{(2)},h^{(3)}) \\ & = \mathcal P(h^{(1)} \mid h^{(2)}) \cdot \mathcal P(h^{(2)},h^{(3)}) \end{aligned} P(h(1),h(2),h(3))=P(h(1)h(2),h(3))P(h(2),h(3))=P(h(1)h(2))P(h(2),h(3))
    最终,联合概率分布 P ( v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ) \mathcal P(v^{(1)},h^{(1)},h^{(2)},h^{(3)}) P(v(1),h(1),h(2),h(3))表示为:
    P ( v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ) = P ( v ( 1 ) ∣ h ( 1 ) ) ⋅ P ( h ( 1 ) ∣ h ( 2 ) ) ⋅ P ( h ( 2 ) , h ( 3 ) ) \mathcal P(v^{(1)},h^{(1)},h^{(2)},h^{(3)}) = P(v^{(1)} \mid h^{(1)}) \cdot \mathcal P(h^{(1)} \mid h^{(2)}) \cdot \mathcal P(h^{(2)},h^{(3)}) P(v(1),h(1),h(2),h(3))=P(v(1)h(1))P(h(1)h(2))P(h(2),h(3))
  • 观察等式右侧,其中 P ( v ( 1 ) ∣ h ( 1 ) ) , P ( h ( 1 ) ∣ h ( 2 ) ) \mathcal P(v^{(1)} \mid h^{(1)}),\mathcal P(h^{(1)} \mid h^{(2)}) P(v(1)h(1)),P(h(1)h(2))均表示基于 Sigmoid \text{Sigmoid} Sigmoid信念网络下关于随机变量集合的后验概率分布,以 v ( 1 ) , h ( 1 ) v^{(1)},h^{(1)} v(1),h(1)之间的关联关系为例, h ( 1 ) h^{(1)} h(1)中的任意结点指向 v ( 1 ) v^{(1)} v(1),其组成的关联关系均属于同父结构,因此实际上, v ( 1 ) v^{(1)} v(1)任意观测变量结点之间在 h ( 1 ) h^{(1)} h(1)可观测的条件下均条件独立。因此, P ( v ( 1 ) ∣ h ( 1 ) ) \mathcal P(v^{(1)} \mid h^{(1)}) P(v(1)h(1))可表示为:
    P ( v ( 1 ) ∣ h ( 1 ) ) = ∏ i = 1 D P ( v i ( 1 ) ∣ h ( 1 ) ) \mathcal P(v^{(1)} \mid h^{(1)}) = \prod_{i=1}^{\mathcal D} \mathcal P(v_i^{(1)} \mid h^{(1)}) P(v(1)h(1))=i=1DP(vi(1)h(1))
    同理, P ( h ( 1 ) ∣ h ( 2 ) ) \mathcal P(h^{(1)} \mid h^{(2)}) P(h(1)h(2))也可表示为:
    这里 P ( 1 ) \mathcal P^{(1)} P(1)表示随机变量集合 h ( 1 ) h^{(1)} h(1)中包含的随机变量的数量。
    P ( h ( 1 ) ∣ h ( 2 ) ) = ∏ j = 1 P ( 1 ) P ( h j ( 1 ) ∣ h ( 2 ) ) \mathcal P(h^{(1)} \mid h^{(2)}) = \prod_{j=1}^{\mathcal P^{(1)}} \mathcal P(h_j^{(1)} \mid h^{(2)}) P(h(1)h(2))=j=1P(1)P(hj(1)h(2))
    至此, P ( v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ) \mathcal P(v^{(1)},h^{(1)},h^{(2)},h^{(3)}) P(v(1),h(1),h(2),h(3))可展开为:
    P ( v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ) = ∏ i = 1 D P ( v i ( 1 ) ∣ h ( 1 ) ) ⋅ ∏ j = 1 P ( 1 ) P ( h j ( 1 ) ∣ h ( 2 ) ) ⋅ P ( h ( 2 ) , h ( 3 ) ) \mathcal P(v^{(1)},h^{(1)},h^{(2)},h^{(3)}) = \prod_{i=1}^{\mathcal D} \mathcal P(v_i^{(1)} \mid h^{(1)}) \cdot \prod_{j=1}^{\mathcal P^{(1)}} \mathcal P(h_j^{(1)} \mid h^{(2)}) \cdot \mathcal P(h^{(2)},h^{(3)}) P(v(1),h(1),h(2),h(3))=i=1DP(vi(1)h(1))j=1P(1)P(hj(1)h(2))P(h(2),h(3))
  • 继续观察, P ( v i ( 1 ) ∣ h ( 1 ) ) \mathcal P(v_i^{(1)} \mid h^{(1)}) P(vi(1)h(1))要如何进行表示呢?观察下图:
    Sigmoid信念网络——局部
    根据Sigmoid信念网络的定义,后验概率 P ( v i ( 1 ) ∣ h ( 1 ) ) \mathcal P(v_i^{(1)} \mid h^{(1)}) P(vi(1)h(1))可表示为:
    W h ( 1 ) → v i ( 1 ) \mathcal W_{h^{(1)} \to v_i^{(1)}} Wh(1)vi(1)表示 h ( 1 ) h^{(1)} h(1)随机变量集合中的各隐变量结点指向 v i ( 1 ) v_i^{(1)} vi(1)的权重信息,上图中的红色线部分。
    P ( v i ( 1 ) ∣ h ( 1 ) ) = Sigmoid { [ W h ( 1 ) → v i ( 1 ) ] T h ( 1 ) + b i ( 0 ) } [ W h ( 1 ) → v i ( 1 ) ] P ( 1 ) × 1 ∈ W ( 1 ) \mathcal P(v_i^{(1)} \mid h^{(1)}) = \text{Sigmoid} \left\{\left[\mathcal W_{h^{(1)} \to v_i^{(1)}}\right]^T h^{(1)} + b_i^{(0)}\right\} \quad \left[\mathcal W_{h^{(1)} \to v_i^{(1)}}\right]_{\mathcal P^{(1)} \times 1} \in \mathcal W^{(1)} P(vi(1)h(1))=Sigmoid{[Wh(1)vi(1)]Th(1)+bi(0)}[Wh(1)vi(1)]P(1)×1W(1)
    同理, P ( h j ( 1 ) ∣ h ( 2 ) ) \mathcal P(h_j^{(1)} \mid h^{(2)}) P(hj(1)h(2))可表示为:
    P ( h j ( 1 ) ∣ h ( 2 ) ) = Sigmoid { [ W h ( 2 ) → h j ( 1 ) ] T h ( 2 ) + b j ( 1 ) } [ W h ( 2 ) → h j ( 1 ) ] P ( 2 ) × 1 ∈ W ( 2 ) \mathcal P(h_j^{(1)} \mid h^{(2)}) = \text{Sigmoid} \left\{\left[\mathcal W_{h^{(2)} \to h_j^{(1)}}\right]^T h^{(2)} + b_j^{(1)}\right\} \quad \left[\mathcal W_{h^{(2)} \to h_j^{(1)}}\right]_{\mathcal P^{(2)} \times 1} \in \mathcal W^{(2)} P(hj(1)h(2))=Sigmoid{[Wh(2)hj(1)]Th(2)+bj(1)}[Wh(2)hj(1)]P(2)×1W(2)
    而最终 P ( h ( 2 ) , h ( 3 ) ) \mathcal P(h^{(2)},h^{(3)}) P(h(2),h(3))是关于受限玻尔兹曼机的联合概率分布,其结果可表示为:
    在受限玻尔兹曼机中介绍过,各层内的随机变量之间均条件独立,这里偏置项中乘的信息实际上就是各随机变量与自身之间关联关系信息。
    P ( h ( 2 ) , h ( 3 ) ) = 1 Z exp ⁡ { [ h ( 3 ) ] T W ( 3 ) ⋅ h ( 2 ) + [ h ( 2 ) ] T ⋅ b ( 2 ) + [ h ( 3 ) ] T b ( 3 ) } \mathcal P(h^{(2)},h^{(3)}) = \frac{1}{\mathcal Z} \exp \left\{ \left[h^{(3)}\right]^T \mathcal W^{(3)} \cdot h^{(2)} + \left[h^{(2)}\right]^T\cdot b^{(2)} + \left[h^{(3)}\right]^Tb^{(3)}\right\} P(h(2),h(3))=Z1exp{[h(3)]TW(3)h(2)+[h(2)]Tb(2)+[h(3)]Tb(3)}

至此,联合概率分布 P ( v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ) \mathcal P(v^{(1)},h^{(1)},h^{(2)},h^{(3)}) P(v(1),h(1),h(2),h(3))可表示为:
P ( v ( 1 ) , h ( 1 ) , h ( 2 ) , h ( 3 ) ) = ∏ i = 1 D P ( v i ( 1 ) ∣ h ( 1 ) ) ⋅ ∏ j = 1 P ( 1 ) P ( h j ( 1 ) ∣ h ( 2 ) ) ⋅ P ( h ( 2 ) , h ( 3 ) ) { P ( v i ( 1 ) ∣ h ( 1 ) ) = Sigmoid { [ W h ( 1 ) → v i ( 1 ) ] T h ( 1 ) + b i ( 0 ) } [ W h ( 1 ) → v i ( 1 ) ] P ( 1 ) × 1 ∈ W ( 1 ) P ( h j ( 1 ) ∣ h ( 2 ) ) = Sigmoid { [ W h ( 2 ) → h j ( 1 ) ] T h ( 2 ) + b j ( 1 ) } [ W h ( 2 ) → h j ( 1 ) ] P ( 2 ) × 1 ∈ W ( 2 ) P ( h ( 2 ) , h ( 3 ) ) = 1 Z exp ⁡ { [ h ( 3 ) ] T W ( 3 ) ⋅ h ( 2 ) + [ h ( 2 ) ] T ⋅ b ( 2 ) + [ h ( 3 ) ] T b ( 3 ) } \begin{aligned} & \mathcal P(v^{(1)},h^{(1)},h^{(2)},h^{(3)}) = \prod_{i=1}^{\mathcal D} \mathcal P(v_i^{(1)} \mid h^{(1)}) \cdot \prod_{j=1}^{\mathcal P^{(1)}} \mathcal P(h_j^{(1)} \mid h^{(2)}) \cdot \mathcal P(h^{(2)},h^{(3)}) \\ & \begin{cases} \mathcal P(v_i^{(1)} \mid h^{(1)}) = \text{Sigmoid} \left\{\left[\mathcal W_{h^{(1)} \to v_i^{(1)}}\right]^T h^{(1)} + b_i^{(0)}\right\} \quad \left[\mathcal W_{h^{(1)} \to v_i^{(1)}}\right]_{\mathcal P^{(1)} \times 1} \in \mathcal W^{(1)} \\ \mathcal P(h_j^{(1)} \mid h^{(2)}) = \text{Sigmoid} \left\{\left[\mathcal W_{h^{(2)} \to h_j^{(1)}}\right]^T h^{(2)} + b_j^{(1)}\right\} \quad \left[\mathcal W_{h^{(2)} \to h_j^{(1)}}\right]_{\mathcal P^{(2)} \times 1} \in \mathcal W^{(2)} \\ \mathcal P(h^{(2)},h^{(3)}) = \frac{1}{\mathcal Z} \exp \left\{ \left[h^{(3)}\right]^T \mathcal W^{(3)} \cdot h^{(2)} + \left[h^{(2)}\right]^T\cdot b^{(2)} + \left[h^{(3)}\right]^Tb^{(3)}\right\} \\ \end{cases} \end{aligned} P(v(1),h(1),h(2),h(3))=i=1DP(vi(1)h(1))j=1P(1)P(hj(1)h(2))P(h(2),h(3)) P(vi(1)h(1))=Sigmoid{[Wh(1)vi(1)]Th(1)+bi(0)}[Wh(1)vi(1)]P(1)×1W(1)P(hj(1)h(2))=Sigmoid{[Wh(2)hj(1)]Th(2)+bj(1)}[Wh(2)hj(1)]P(2)×1W(2)P(h(2),h(3))=Z1exp{[h(3)]TW(3)h(2)+[h(2)]Tb(2)+[h(3)]Tb(3)}
对应的模型参数有:
θ = { W ( 1 ) , W ( 2 ) , W ( 3 ) , b ( 0 ) , b ( 1 ) , b ( 2 ) , b ( 3 ) } \theta = \{\mathcal W^{(1)},\mathcal W^{(2)},\mathcal W^{(3)},b^{(0)},b^{(1)},b^{(2)},b^{(3)}\} θ={W(1),W(2),W(3),b(0),b(1),b(2),b(3)}

下一节将介绍:为什么要设计乘多个 RBM \text{RBM} RBM叠加的方式,或者说,叠加 RBM \text{RBM} RBM的动机。

相关参考:
(系列二十七)深度信念网络1-背景介绍

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Day853.WorkerThread模式 -Java 性能调优实战

WorkerThread模式 Hi,我是阿昌,今天学习记录的是关于WorkerThread模式的内容。 Thread-Per-Message 模式,对应到现实世界,其实就是委托代办。这种分工模式如果用 Java Thread 实现,频繁地创建、销毁线程非常影响性能…

场景编程集锦 - 吉米的总统梦想

1. 场景描述 吉米是太平洋岛国一个贫苦家庭的孩子,他的梦想就是当总统,引领国家走向富强之路。 开学的第一堂课上,老师用白色的粉笔在黑板上写下了“我的梦想”,同学们都陷入了思考。大卫的梦想是当一名科学家,用奇思妙…

CSS初级教程(文本)【第六天】

文章目录【1】CSS 文本[字体颜色|背景色]【2】CSS 文本对齐【3】CSS 文字装饰【4】CSS 文本转换[大写或小写]【5】CSS 文字间距【6】CSS 文本阴影【7】所有 CSS 文本属性CSS上回学习链接 CSS初级教程 颜色【第一天】 CSS初级教程 背景【第二天】 CSS初级教程 边框【第三天】 CS…

Windows访问控制 -- SID

Windows访问控制是一个比较大的题目,因此计划用一系列的文章简单谈一下这个。本篇是开篇,介绍SID。 Windows访问控制定义 Windows访问控制的含义可以参考MSDN的描述:Access control refers to security features that control who can acce…

Java集合容器介绍

Java 容器分为 Collection 和 Map 两大类,其下又有很多子类,如下所示: Collection接口:单列数据,定义了存取一组对象的方法的集合 1、List:元素有序(指的是存储时,与存放顺序保持一致)、可重复的…

【Docker】(四)使用volume持久化Docker容器中的Redis数据

1.前言 本系列文章记录了从0开始学习Docker的过程,Docker系列历史文章: (一)基本概念与安装使用 (二)如何使用Docker发布一个SpringBoot服务 (三)使用registry远程镜像仓库管理镜像…

[ 数据结构 ] 赫夫曼编码--------数据、文件压缩解压

0 引出 如上图:给定字符串按定长编码处理,最终对应二进制长度为359 思考:如何压缩,将359有效降低? ----回顾:赫夫曼树 1 数据压缩 拿到数据(字符串)的第一反应,虽然知道应该也像上面一样转为字节数组,但就不知道该怎么办了?统计数组中各字节使用的次数,将次数作为权值,字节…

2023.1.8 学习周报

文章目录摘要文献阅读1.题目2.摘要3.介绍4.论文主要贡献5.相关工作5.1 序列感知的推荐系统5.2 神经注意模型6.模型:ATTREC6.1 序列推荐6.2 基于Self-Attention的用户短期兴趣建模6.3 用户长期兴趣建模6.4 模型学习7.实验7.1 数据集7.2 评估指标7.3 模型比较7.4 实验…

SSO单点登录实例详解(前端传Code授权登录)

什么是 SSO(单点登录) SSO 英文全称 Single Sign On,单点登录。SSO 是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 单点登录流程 单点登录大致流程如下所示: 单点登录详细流程&#x…

【自学C++】C++变量初始化

C变量初始化 C变量初始化教程 变量 的初始化就是在定义变量的同时,给变量设置一个初始值,在 C 中,如果定义变量没有初始化,那么变量有可能会被赋值也有可能不会赋值。 如果是定义的 全局变量 或者 静态变量,未初始化…

2022年语音合成(TTS)和语音识别(ASR)年度总结

论文统计每月更新一次,主要跟踪语音合成和语音识别的发展状况(很多文章都是在会议后才发出,但不影响统计。统计过程难免存在疏漏,因此统计结果仅供参考。所有文章语音合成领域统计列表请访问http://yqli.tech/page/tts_paper.html&#xff0c…

绝大多数人远远低估了软件开发的难度

给你付钱了,你应该把软件做好! 这个话相当于: 给你付钱了,你应该把月亮摘下来! 趣讲大白话:臣妾做不到 ********** 软件是特殊商品服务 可以说很难有标准 开发的难度取决于需求多少,技术难度&a…

Java Map集合的介绍和使用

什么是Map类型的集合 介绍 1.用于保存具有映射关系的数据(key——value)。 2.Map中的key和value可以是任意的类型的数据。 3.Map中的key值不允许重复。 4.Map中的value值可以重复。 5.一般常用string作为value的key。 6.key和value之间存在一一对…

如何进行地图SDK开发(二)——示例文档

概述 前面的文章文章我们写到了SDK的开发以及ak认证的实现,在本文我们继续讲讲地图SDK开发中的示例文档的实现。 技术点 vue3viteelement-plusmonaco-editor 实现后效果 实现 1. 工程初始化 1.1 搭建工程 搭建工程的过程请参照博文(使用vite搭建vue3项目&…

javaEE初阶 — 线程池

文章目录线程池1 什么是线程池2 标准库中的线程池2.1 什么是工厂模式2.2 如何使用标准库中的线程池完成任务2.3 ThreadPoolExecutor 构造方法的解释3 实现一个线程池线程池 1 什么是线程池 随着并发程度的提高,随着对性能要求标准的提高会发现,好像线程…

[cpp进阶]C++异常

文章目录C语言传统处理错误的方式C异常概念C异常使用异常的抛出和捕获异常的重新抛出异常安全异常规范自定义异常体系C标准库的异常体系异常的优缺点C语言传统处理错误的方式 传统的错误处理机制: 终止程序。assert断言直接终止程序。缺点:过于粗暴&am…

Fiddler抓取手机APP报文

Http协议代理工具有很多,比如Burp Suite、Charles、Jmeter、Fiddler等,它们都可以用来抓取APP报文,其中charles和Burp Suite是收费的,Jmeter主要用来做接口测试,而Fiddler提供了免费版,本文记录一下在Windo…

位运算做加法,桶排序找消失元素,名次与真假表示,杨氏矩阵,字符串左旋(外加两道智力题)

Tips 1. 2. 3. 大小端字节序存储这种顺序只有在放进去暂时存储的时候是这样的,但是一旦我里面的数据需要参与什么运算之类的,会“拿出来”先恢复到原先的位置再参与运算,因此,大小端字节序存储的什么顺序不影响移位运算等等…

【案例教程】CLUE模型构建方法、模型验证及土地利用变化情景预测实践技术

【前沿】:土地利用/土地覆盖数据是生态、环境和气象等领域众多模型的重要输入参数之一。基于遥感影像解译,可获取历史或当前任何一个区域的土地利用/土地覆盖数据,用于评估区域的生态环境变化、评价重大生态工程建设成效等。借助CLUE模型&…

声音产生感知简记

声音产生 人的发音器官包括:肺、气管、声带、喉、咽、鼻腔、口腔、唇。肺部产生的气流冲击声带,产生震动。 声带每开启和闭合一次的时间是基音周期(Pitch period,T),其到数为基音频率(F.=1/T,基频),范围在70-450Hz。基频越高,声音越尖细,如小孩的声音比大人尖,就是…