熵、交叉熵、KL散度【详细理论推导】

机器学习笔记

第一章 机器学习简介
第二章 感知机
第三章 支持向量机
第四章 朴素贝叶斯分类器
第五章 Logistic回归
第六章 线性回归和岭回归
第七章 多层感知机与反向传播【Python实例】
第八章 主成分分析【PCA降维】
第九章 隐马尔可夫模型
第十章 奇异值分解


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 机器学习笔记
  • 一、熵
    • 1 定义
    • 2 熵函数性质
  • 二、交叉熵
    • 1 定义
    • 2 性质
  • 三、 应用:logistics回归
    • 1 交叉熵损失函数
    • 2 计算实例
  • 四、 应用:softmax
  • 五、KL散度
  • 六、参考资料


一、熵

1 定义

熵是信息论中最基本、最核心的一个概念,它衡量了一个概率分布的随机程度,或者说包含的信息量的大小。首先来看离散型随机变量,考虑随机变量取某一个特定值时包含的信息量的大小:

  1. 假设随机变量取值为 x,对应的概率为 p(x)。直观来看,取这个值的可能性越小,而它又发生了,则包含的信息量就越大。也就是说,概率越小,信息量越大。例如,一年之内人类登陆火星,包含的信息量显然比广州明天要下雨大,因为前者的概率明显小于后者。
  2. 因此如果定义一个函数 h(x)来描述随机变量取值为的信息量的大小的话,则h(x)应该是 p ( x )的单调减函数

满足单调递减要求的函数太多了,该选择哪个函数呢? 接着考虑。假设有两个相互独立的随机变量, 它们的取值分别为x和y, 取该值的概率为 p ( x ) p(x) p(x) p ( y ) p(y) p(y) 。根据随机变量的独立性, 它们的联合概率为:
p ( x , y ) = p ( x ) p ( y ) . p(x, y)=p(x) p(y). p(x,y)=p(x)p(y).由于这两个随机变量是相互独立的, 因此它们各自取某一值时包含的信息量应该是两个随机变量分别取这些值的时候包含的信息量之和
h ( x , y ) = h ( x ) + h ( y ) . h(x, y)=h(x)+h(y). h(x,y)=h(x)+h(y).
这要求 h ( x ) h(x) h(x) 能把 p ( x ) p(x) p(x) 的乘法转化为加法, 在数学上, 满足此要求的是对数函数。因此, 可以把信息量定义为:

h ( x ) = − log ⁡ p ( x ) h(x)=-\log p(x) h(x)=logp(x)这个对数的底数是多少并没有太大关系, 根据换底公式, 最后计算出来的结果就差了一个倍数, 信息论中通常以 2 为底, 在机器学习中通常以 e e e 为底, 在后面的计算中为了方便起见我们用 10 为底。需要强调的对数函数前面加上了负号, 这是因为对数函数是增函数, 而我们要求 h ( x ) h(x) h(x) p ( x ) p(x) p(x) 的减函 数。另外, 由于 0 ≤ p ( x ) ≤ 1 0 \leq p(x) \leq 1 0p(x)1, 因此 log ⁡ p ( x ) < 0 \log p(x)<0 logp(x)<0, 加上负号之后刚好可以保证这个信息量为正。

上面只是考虑了随机变量取某一个值时包含的信息量, 而随机变量的取值是随机的, 有各种可能, 那又怎么计算它取所有各种取值时所包含的信息量呢? 既然随机变量取值有各种情况,而且取每个值有一个概率, 那计算它取各个值时的信息量的均值即数学期望即可, 这个信息量的均值, 就是熵

对于离散型随机变量, 熵定义为
H ( p ) = E x [ − log ⁡ p ( x ) ] = − ∑ i p i log ⁡ p i \begin{aligned} H(p) &=E_{x}[-\log p(x)] \\ &=-\sum_{i} p_{i} \log p_{i} \end{aligned} H(p)=Ex[logp(x)]=ipilogpi这里约定 p i = p ( x i ) p_i=p\left(x_{i}\right) pi=p(xi)

例:

假设 x x x概率分布如下:

截屏2023-12-24 15.23.04它的熵为
H ( p ) = − 0.9 × log ⁡ 0.9 − 0.05 × log ⁡ 0.05 − 0.02 × log ⁡ 0.02 − 0.03 × log ⁡ 0.03 = 0.041 + 0.065 + 0.034 + 0.046 = 0.186. \begin{aligned} H(p) & =-0.9 \times \log 0.9-0.05 \times \log 0.05-0.02 \times \log 0.02-0.03 \times \log 0.03 \\ & =0.041+0.065+0.034+0.046 \\ & =0.186. \end{aligned} H(p)=0.9×log0.90.05×log0.050.02×log0.020.03×log0.03=0.041+0.065+0.034+0.046=0.186.

2 熵函数性质

根据熵的定义,把熵看做关于p的函数,有如下性质:

  1. 熵函数为凹函数
  2. 随机变量取各个值的概率相等(均匀分布)时有极大值
  3. 在取某一个值的概率为1,取其他所有值的概率为0时有极小值(此时随机变量退化成某一必然事件或者说确定的变量)。

熵函数求极大极小值,是一个带约束的优化问题,可以用拉格朗日乘子法进行求解。对于离散型随机变量, 熵定义的是如下函数:
H ( p ) = − ∑ i = 1 n x i log ⁡ x i H(p)=-\sum_{i=1}^{n} x_{i} \log x_{i} H(p)=i=1nxilogxi其中 x i x_{i} xi 为随机变量取第 i i i 个值的概率。约束条件为:
∑ i = 1 n x i = 1 x i ≥ 0 \begin{array}{r} \sum_{i=1}^{n} x_{i}=1 \\ x_{i} \geq 0 \end{array} i=1nxi=1xi0由于对数函数的定义域是非负的, 因此可以去掉不等式约束。构造拉格朗日乘子函数:
L ( x , λ ) = − ∑ i = 1 n x i log ⁡ x i + λ ( ∑ i = 1 n x i − 1 ) L(x, \lambda)=-\sum_{i=1}^{n} x_{i} \log x_{i}+\lambda\left(\sum_{i=1}^{n} x_{i}-1\right) L(x,λ)=i=1nxilogxi+λ(i=1nxi1) x i x_{i} xi 求偏导数并令其为 0 , 可以得到:
∂ L ∂ x i = − log ⁡ x i − 1 + λ = 0 ⇒ log ⁡ x i = λ − 1 \frac{\partial L}{\partial x_{i}}=-\log x_{i}-1+\lambda=0 \\ \Rightarrow \log x_{i}=\lambda-1 xiL=logxi1+λ=0logxi=λ1这意味着在极值点处所有的 x i x_{i} xi 必须相等。对 λ \lambda λ 求偏导数并令其为 0 , 可以得到:
∑ i = 1 n x i = 1 \sum_{i=1}^{n} x_{i}=1 i=1nxi=1因此当 x i = 1 / n x_{i}=1 / n xi=1/n 时函数取得极值。此时熵的值为:
H ( p ) = − ∑ i = 1 n 1 n log ⁡ 1 n = log ⁡ n \begin{aligned} H(p) &=-\sum_{i=1}^{n} \frac{1}{n} \log \frac{1}{n} \\ &=\log n \end{aligned} H(p)=i=1nn1logn1=logn进一步的可以证明该值是极大值。熵的二阶偏导数为:
∂ 2 H ∂ x i 2 = − 1 / x i ∂ 2 H ∂ x i ∂ x j = 0 , j ≠ i \begin{aligned} \frac{\partial^{2} H}{\partial x_{i}^{2}} &=-1 / x_{i} \\ \frac{\partial^{2} H}{\partial x_{i} \partial x_{j}} &=0, j \neq i \end{aligned} xi22Hxixj2H=1/xi=0,j=i因此Hessian矩阵
[ − 1 / x 1 ⋯ 0 ⋯ . ⋅ ⋯ 0 ⋯ − 1 / x n ] \left[\begin{array}{ccc} -1 / x_{1} & \cdots & 0 \\ \cdots & . \cdot & \cdots \\ 0 & \cdots & -1 / x_{n} \end{array}\right] 1/x10.01/xn 由于 x i > 0 x_{i}>0 xi>0, 该矩阵负定, 熵是凹函数, 有极大值。因此当 x i = 1 / n x_{i}=1 / n xi=1/n 时熵有极大值。如果定义:
0 log ⁡ 0 = 0 0 \log 0=0 0log0=0显然它与下面的极限是一致的:
lim ⁡ x → 0 x log ⁡ x = 0 \lim _{x \rightarrow 0} x \log x=0 x0limxlogx=0则当某一个 x i = 1 x_{i}=1 xi=1, 其他 x j = 0 , j ≠ i x_{j}=0, j \neq i xj=0,j=i 的时熵有极小值 0
H = 0 log ⁡ 0 + … + 1 log ⁡ 1 + … + 0 log ⁡ 0 = 0 \begin{aligned} H &=0 \log 0+\ldots+1 \log 1+\ldots+0 \log 0 \\ &=0 \end{aligned} H=0log0++1log1++0log0=0除此情况之外, 只要满足 0 < x i < 1 0<x_{i}<1 0<xi<1, 则 log ⁡ x i < 0 \log x_{i}<0 logxi<0 , 因此
− x i log ⁡ x i > 0 -x_{i} \log x_{i}>0 xilogxi>0上面这些结果说明熵是非负的,当且仅当随机变量取某一值的概率为 1 , 取其他值的概率为 0 时熵有极小值 0 。此时随机变量退化成普通的变量, 取值固定。而当随机变量取所有值的概率相等时即均匀分布时熵有极大值。故熵的范围为
0 ≤ H ( p ) ≤ log ⁡ n 0 \leq H(p) \leq \log n 0H(p)logn

二、交叉熵

1 定义

交叉熵的定义与熵类似, 不同的是定义在两个概率分布而不是一个概率分布之上。

对于离散型随机变量, 交叉熵定义为:
H ( p , g ) = − ∑ x p ( x ) log ⁡ q ( x ) H(p, g)=-\sum_{x} p(x) \log q(x) H(p,g)=xp(x)logq(x)其中 x x x 为离散型随机变量, p ( x ) p(x) p(x) q ( x ) q(x) q(x) 是它的两个概率分布。

对于连续型概率分布, 交叉熵定义为:
∫ x p ( x ) log ⁡ q ( x ) d x = E p [ − log ⁡ q ] \int_{x} p(x) \log q(x) d x=E_{p}[-\log q] xp(x)logq(x)dx=Ep[logq]如果两个概率分布完全相等, 则交叉熵退化成熵。交叉熵衡量了两个概率分布的差异:

  1. 其值越大, 两个概率分布相差越大.
  2. 其值越小,则两个概率分布的差异越小.

2 性质

交叉熵函数有如下性质:

  1. 交叉熵损失函数是凸函数
  2. 当两个分布相等的时候, 交叉熵有极小值。

证明同样用拉格朗日乘子法,并验证函数凹凸性即可。

假设第一个概率分布固定即 p ( x ) p(x) p(x) 为常数 a i a_i ai, 此时交叉熵为如下形式的函数:
H ( x ) = − ∑ i = 1 n a i log ⁡ x i H(x)=-\sum_{i=1}^{n} a_{i} \log x_{i} H(x)=i=1nailogxi约束条件为:
− ∑ i = 1 n x i = 1 -\sum_{i=1}^{n} x_{i}=1 i=1nxi=1构造拉格朗日乘子函数
L ( x , λ ) = − ∑ i = 1 n a i log ⁡ x i + λ ( ∑ i = 1 n x i − 1 ) L(x, \lambda)=-\sum_{i=1}^{n} a_{i} \log x_{i}+\lambda\left(\sum_{i=1}^{n} x_{i}-1\right) L(x,λ)=i=1nailogxi+λ(i=1nxi1)

对所有变量求偏导数, 并令偏导数为 0 , 有
− a i x i + λ = 0 ∑ i = 1 n x i = 1 ∑ i = 1 n a i = 1 \begin{gathered} -\frac{a_{i}}{x_{i}}+\lambda=0 \\ \sum_{i=1}^{n} x_{i}=1 \\ \sum_{i=1}^{n} a_{i}=1 \end{gathered} xiai+λ=0i=1nxi=1i=1nai=1最后可以解得
λ = 1 x i = a i \begin{aligned} \lambda &=1 \\ x_{i} &=a_{i} \end{aligned} λxi=1=ai交叉熵函数的Hessian矩阵为:
[ a 1 / x 1 2 ⋯ 0 ⋯ ⋯ ⋯ 0 ⋯ a n / x n 2 ] \left[\begin{array}{ccc} a_{1} / x_{1}^{2} & \cdots & 0 \\ \cdots & \cdots & \cdots \\ 0 & \cdots & a_{n} / x_{n}^{2} \end{array}\right] a1/x1200an/xn2
该矩阵正定, 因此交叉熵损失函数是凸函数, 上面的极值点是极小值点。

三、 应用:logistics回归

1 交叉熵损失函数

在Logistics回归中,交叉熵损失函数定义为:
Loss ⁡ = − ∑ i = 1 n y i log ⁡ y i ′ \operatorname{Loss}=-\sum_{i=1}^{n} y_{i} \log y_{i}^{\prime} Loss=i=1nyilogyi其中: y i y_i yi 为标签值概率分布(取值为0或1), y i ′ y i^{\prime} yi 为预值测概率分布,所以最小化Loss函数,等价于最小化交叉熵,而交叉熵取得最小时,预测值的概率分布与标签值的概率分布最接近

事实上可以将 y i ′ = 1 1 + e − W T X y_i'=\frac{1}{1+e^{-W^TX}} yi=1+eWTX1,代入Loss函数,通过和上面类似的证明,可以证明:

  1. Loss函数的Hessian矩阵半正定,目标函数是凸函数
  2. logistic回归求解的优化问题是不带约束条件的凸优化问题。
  3. 可以证明,如果使用欧氏距离作为目标函数则无法保证目标函数是凸函数。

这是使用交叉熵而不使用欧氏距离作为logistic回归的目标函数的主要原因

2 计算实例

假设有一个3分类问题, 某个样例的正确答案是 ( 1 , 0 , 0 ) (1,0,0) (1,0,0)

  1. 甲模型经过softmax回归之后的预测答案是 ( 0.5 , 0.2 , 0.3 ) (0.5,0.2,0.3) (0.5,0.2,0.3)
  2. 乙模型经过softmax回归之后的预测答案是 ( 0.7 , 0.1 , 0.2 ) (0.7,0.1,0.2) (0.7,0.1,0.2)

由交叉熵定义: H ( p , q ) = − ∑ x p ( x ) log ⁡ q ( x ) 可得: H ( ( 1 , 0 , 0 ) , ( 0.5 , 0.2 , 0.3 ) ) = − log ⁡ 0.5 ≈ 0.301 H ( ( 1 , 0 , 0 ) , ( 0.7 , 0.1 , 0.2 ) ) = − log ⁡ 0.7 ≈ 0.155 \begin{aligned} 由交叉熵定义:\\ &\boldsymbol{H}(\boldsymbol{p}, \boldsymbol{q})=-\sum_{\boldsymbol{x}} \boldsymbol{p}(\boldsymbol{x}) \log \boldsymbol{q}(\boldsymbol{x}) \\ 可得:\\ &\boldsymbol{H}((1,0,0),({0 . 5}, {0 . 2}, {0 . 3}))=-\log 0.5 \approx 0.301 \\ &\boldsymbol{H}((1,0,0),(0.7,0.1,0.2))=-\log 0.7 \approx 0.155 \end{aligned} 由交叉熵定义:可得:H(p,q)=xp(x)logq(x)H((1,0,0),(0.5,0.2,0.3))=log0.50.301H((1,0,0),(0.7,0.1,0.2))=log0.70.155

四、 应用:softmax

softmax回归经常被用作神经网络的最后一层,完成多分类任务,现在在分类任务训练时采用的损失函数一般为交叉熵,原因如下:

  1. 在神经网络的早期,更多的使用了欧氏距离损失函数,后来对分类任务交叉熵使用的更多
  2. 对于分类问题,交叉熵一般比欧氏距离有更好的效果,可以收敛到更好的局部最优解。

假设神经网络的原始输出为 y 1 , y 2 , … . , y n y_{1}, y_{2}, \ldots . , y_{n} y1,y2,.yn, 那么经过Softmax回归处理之后的输出为:
y ′ = softmax ⁡ ( y i ) = e y i ∑ j = 1 n e y j y^{\prime}=\operatorname{softmax}\left(y_{i}\right)=\frac{e^{y_{i}}}{\sum_{j=1}^{n} e^{y_{j}}} y=softmax(yi)=j=1neyjeyi
以上可以看出: ∑ y ′ = 1 \sum y^{\prime}=1 y=1。这也是为什么softmax层的每个节点的输出值成为了概率和为1的概率分布

  1. 标签是 [ 0 , 0 , 1 , 0 , … . 0 , 0 ] [0,0,1,0, \ldots .0,0] [0,0,1,0,.0,0] 这种形式
  2. 通过softmax实际的输出是 [ 0.01 , 0.01 , 0.6 , … . 0.02 , 0.01 ] [0.01,0.01,0.6, \ldots .0 .02,0.01] [0.01,0.01,0.6,.0.02,0.01] 这种形式

所以可以用交叉熵作为损失函数,当交叉熵最小时,两个概率分布最相近,实际输出越接近标签!

五、KL散度

有了以上信息论中的相关知识后, 可以进一步引出KL散度。

K L \mathrm{KL} KL 散度又可称为相对熵,描述两个概率分布 P \mathrm{P} P Q \mathrm{Q} Q 的差异或相似性, 用 D K L ( P ∥ Q ) D_{K L}(P \| Q) DKL(PQ) 表示: D K L ( P ∥ Q ) = H ( P , Q ) − H ( P ) = ∑ i P ( x i ) log ⁡ 1 Q ( x i ) − ∑ i P ( x i ) log ⁡ 1 P ( x i ) = ∑ i P ( x i ) log ⁡ P ( x i ) Q ( x i ) \begin{aligned} D_{K L}(P \| Q) &=H(P, Q)-H(P) \\ &=\sum_i P\left(x_i\right) \log \frac{1}{Q\left(x_i\right)}-\sum_i P\left(x_i\right) \log \frac{1}{P\left(x_i\right)} \\ &=\sum_i P\left(x_i\right) \log \frac{P\left(x_i\right)}{Q\left(x_i\right)} \end{aligned} DKL(PQ)=H(P,Q)H(P)=iP(xi)logQ(xi)1iP(xi)logP(xi)1=iP(xi)logQ(xi)P(xi)

很显然, 散度越小, 说明概率 Q Q Q 与概率 P P P 之间越接近, 那么估计的概率分布与真实的概率分布也就越接近。 K L \mathrm{KL} KL 散度的性质

  1. 非对称性: D K L ( P ∥ Q ) ≠ D K L ( Q ∥ P ) D_{K L}(P \| Q) \neq D_{K L}(Q \| P) DKL(PQ)=DKL(QP)
  2. D K L ( P ∥ Q ) ⩾ 0 D_{K L}(P \| Q) \geqslant 0 DKL(PQ)0, 仅在 P = Q P=Q P=Q 时等于0

证明性质2
D K L ( P ∥ Q ) = ∑ i P ( x i ) log ⁡ P ( x i ) Q ( x i ) = − ∑ i P ( x i ) log ⁡ Q ( x i ) P ( x i ) D_{K L}(P \| Q)=\sum_i P\left(x_i\right) \log \frac{P\left(x_i\right)}{Q\left(x_i\right)}=-\sum_i P\left(x_i\right) \log \frac{Q\left(x_i\right)}{P\left(x_i\right)} DKL(PQ)=iP(xi)logQ(xi)P(xi)=iP(xi)logP(xi)Q(xi)
由于 log ⁡ \log log 函数是凹的, 由 Jensen 不等式可得:
∑ i λ i f ( x i ) ⩽ f ( ∑ i λ i x i ) \sum_i \lambda_i f\left(x_i\right) \leqslant f\left(\sum_i \lambda_i x_i\right) iλif(xi)f(iλixi)那么:
∑ i P ( x i ) log ⁡ Q ( x i ) P ( x i ) ⩽ log ⁡ ( ∑ i P ( x i ) Q ( x i ) P ( x i ) ) = log ⁡ ( ∑ i Q ( x i ) ) = log ⁡ 1 = 0 \sum_i P\left(x_i\right) \log \frac{Q\left(x_i\right)}{P\left(x_i\right)} \leqslant \log \left(\sum_i P\left(x_i\right) \frac{Q\left(x_i\right)}{P\left(x_i\right)}\right)=\log \left(\sum_i Q\left(x_i\right)\right)=\log 1=0 iP(xi)logP(xi)Q(xi)log(iP(xi)P(xi)Q(xi))=log(iQ(xi))=log1=0
因此:
D K L ( P ∥ Q ) = − ∑ i P ( x i ) log ⁡ Q ( x i ) P ( x i ) ⩾ 0 D_{K L}(P \| Q)=-\sum_i P\left(x_i\right) \log \frac{Q\left(x_i\right)}{P\left(x_i\right)} \geqslant 0 DKL(PQ)=iP(xi)logP(xi)Q(xi)0

六、参考资料

  1. 理解熵和交叉熵

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

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

相关文章

【机器学习-05】模型的评估与选择

在前面【机器学习-01】机器学习基本概念与建模流程的文章中我们已经知道了机器学习的一些基本概念和模型构建的流程&#xff0c;本章我们将介绍模型训练出来后如何对模型进行评估和选择等 1、 误差与过拟合 学习器对样本的实际预测结果与真实值之间的差异&#xff0c;我们称之…

最新2024年阿里云服务器地域和可用区全球分布表

2024年最新阿里云服务器地域分布表&#xff0c;地域指数据中心所在的地理区域&#xff0c;通常按照数据中心所在的城市划分&#xff0c;例如华北2&#xff08;北京&#xff09;地域表示数据中心所在的城市是北京。阿里云地域分为四部分即中国、亚太其他国家、欧洲与美洲和中东&…

spring 没完没了

start 轻量级开源的j2ee框架&#xff0c;容器框架 装javabean aop ioc 定义一个starter的jar包&#xff0c;写一个configuration配置类&#xff0c;将bean定义其中&#xff0c;在starter包的meta-inf/spring.factories中写入配置类&#xff0c;springboot会按约定加载该配置类 …

3D模型优化服务+三维可视化+数字孪生+元宇宙=眸瑞科技

眸瑞科技&#xff1a;老子云平台AMRT3D数字孪生引擎 老子云概述 老子云3D可视化快速开发平台&#xff0c;集云压缩、云烘焙、云存储云展示于一体&#xff0c;使3D模型资源自动输出至移动端PC端、Web端&#xff0c;能在多设备、全平台进行展示和交互&#xff0c;是全球领先、自…

【Flask开发实战】防火墙配置文件解析(二)之shell读取内容

一、前言 上一篇文章中&#xff0c;介绍了防火墙配置文件包含的基本元素和格式样式&#xff0c;并模拟了几组有代表性的规则内容&#xff0c;作为基础测试数据。在拿到基础测试数据后&#xff0c;关于我们最终想解析成的数据是什么样式的&#xff0c;其实不难看出&#xff0c;…

gitlab仓库使用流程(开发)

1.1.GitLab代码提交流程&#xff1a; 1.1.1准备阶段&#xff1a; 确保已经安装了Git&#xff0c;并且配置了正确的用户名和邮箱地址。 在本地创建一个新的文件夹&#xff0c;用于存放即将开发的代码。 1.1.2.拉取代码&#xff1a; 使用git clone命令从GitLab上拉取项目代码…

day05vue学习

day05 一、学习目标 1.自定义指令 基本语法&#xff08;全局、局部注册&#xff09;指令的值v-loading的指令封装 2.插槽 默认插槽具名插槽作用域插槽 3.综合案例&#xff1a;商品列表 MyTag组件封装MyTable组件封装 4.路由入门 单页应用程序路由VueRouter的基本使用 …

学习网络编程No.14【数据链路层ARP理解】

引言&#xff1a; 北京时间&#xff1a;2024/3/14/9:20&#xff0c;简单聊一聊我的日常。昨天晚上十点左右更新完新的一篇文章&#xff0c;回到宿舍简简单单花了个两首歌的时间洗了个澡&#xff0c;然后为了保持形象吹了个头发&#xff0c;哈哈哈&#xff01;当然对比以前的我…

[Labtools 27-1429] XML parser encountered a problem in file

平台&#xff1a;Vivado2108.3 最近在使用vivado的debug过程中发现&#xff0c;编译好工程后打开open hardware manager出现如下错误。 [Labtools 27-1429] XML parser encountered a problem in file E:/githome/xxxx/hw_1/hw.xml at line 1 : XML character encoding not su…

关系数据库标准语言SQL

1.SQL概述 1.1基本表&#xff08;Base table&#xff09; 实际存储在数据库中的表SQL中一个关系就对应一个基本表基本表可以有若干个索引基本表的集合组成关系模式&#xff0c;即全局概念模式&#xff08;数据的整体逻辑结构&#xff09; 1.2 存储文件 存储文件和相关索引组…

蓝桥杯刷题总结(Python组)

1、蛇形矩阵 解题思路&#xff1a;每次赋值后都对方向进行改变&#xff0c;一般上下左右就是&#xff08;-1&#xff0c;0&#xff09;&#xff0c;&#xff08;0&#xff0c;1&#xff09;&#xff0c;&#xff08;1&#xff0c;0&#xff09;&#xff0c;&#xff08;0&…

21.环形链表

给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;…

【sql】深入理解 mysql的EXISTS 语法

相关文章&#xff1a; 【sql】深入理解 mysql的EXISTS 语法 【sql】初识 where EXISTS 1. 使用格式如下&#xff1a; select * from a where exists ( 任何子查询 ) 代码根据颜色分成两段&#xff0c;前面的是主查询&#xff0c;后面红色的是子查询&#xff0c;先主后子&…

Linux(Ubuntu)下安装paddleocr详细教程

PaddleOCR旨在打造一套丰富、领先、且实用的OCR工具库&#xff0c;助力开发者训练出更好的模型&#xff0c;并应用落地。 1、 Ubuntu安装教程&#xff1a; 首先安装paddlepaddle&#xff1a;pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple 一般此项不会报错…

交叉注意力融合时空特征的TCN-Transformer并行预测模型

独家 | 高创新预测模型 往期精彩内容&#xff1a; 时序预测&#xff1a;LSTM、ARIMA、Holt-Winters、SARIMA模型的分析与比较-CSDN博客 风速预测&#xff08;一&#xff09;数据集介绍和预处理-CSDN博客 风速预测&#xff08;二&#xff09;基于Pytorch的EMD-LSTM模型-CSDN博…

IDEA上的Scala环境搭建

Scala环境搭建 一、搭建Scala开发环境 安装Scala编译器 安装scala-2.12.10.msi&#xff08;详见【我的资源】&#xff09; 检查scala安装情况 在dos窗口输入scala&#xff0c;检查是否能够进入编译器。进行简单的scala命令计算 在IDEA中进行scala编码 File - Settings - …

智能风暴:如何码垛协作机器人正在重塑日用品生产?

在日用品行业中&#xff0c;码垛工作一直是一项劳动强度大、重复性高的工作。如今&#xff0c;随着科技的发展&#xff0c;码垛协作机器人的出现&#xff0c;正在给这一行业带来革命性的改变。 以往&#xff0c;工人们在炎热或寒冷的环境下&#xff0c;搬运、堆叠着各种日用品&…

redis-黑马点评-商户查询缓存

缓存&#xff1a;cache public Result queryById(Long id) {//根据id在redis中查询数据String s redisTemplate.opsForValue().get(CACHE_SHOP_KEY id);//判断是否存在if (!StrUtil.isBlank(s)) {//将字符串转为bean//存在&#xff0c;直接返回Shop shop JSONUtil.toBean(s, …

零基础如何学习Web 安全,如何让普通人快速入门网络安全?、

前言 网络安全现在是朝阳行业&#xff0c;缺口是很大。不过网络安全行业就是需要技术很多的人达不到企业要求才导致人才缺口大 初级的现在有很多的运维人员转网络安全&#xff0c;初级也会慢慢的卷起来&#xff0c;但是岗位多不用怕&#xff0c;以后各大厂也都会要网络安全人…

【linux】CentOS查看系统信息

一、查看版本号 在CentOS中&#xff0c;可以通过多种方法来查看版本号。以下是几种常用的方法&#xff1a; 使用cat命令查看/etc/centos-release文件&#xff1a; CentOS的版本信息存储在/etc/centos-release文件中。可以使用cat命令来显示该文件的内容&#xff0c;从而获得C…