小白入门机器学习:PCA-LDA人脸识别这回事

  • 1.人脸识别这回事
    • 1.1我们是怎样认出一张脸的
    • 1.2机器该如何认出一张脸
    • 1.3我们该如何“教”机器认出一张脸
  • 2.理论:LDA与PCA这回事
    • 2.1数学基础
      • 2.1.1数据预处理
      • 2.1.2 利用投影来实现降维
      • 2.1.3 寻找最佳降维方向
      • 2.1.4协方差与协方差矩阵
      • 2.1.5特征值,特征向量以及对角化最大方差
      • 2.1.6瑞利商问题以及广义瑞利商问题(这一部分不懂可跳过)
      • 2.1.7奇异值分解
    • 2.2算法思路
      • 2.2.1 PCA-Eigenface算法大体思路
      • 2.2.2 PCA-LDA算法的大体思路
  • 3. 实战:Python这回事
  • 彩蛋:SVD优化

本文比较通俗易懂,希望能把人脸识别这回事讲得清楚明了

本文第一部分先通俗地从人的角度讲清楚人脸识别是怎么一回事,以及一些专有名词的含义
本文第二部分讲一下算法及其数学原理
本文第三部分通过用python实践最简单不带任何优化的PCA算法以及PCA-LDA算法,实践非常简单,仅作入门了解机器学习算法

最后,本文不会出现太多公式,主要在代码之间体现数学运算过程

阅读本文第一部分只需要: 一颗好奇的心
阅读本文第二部分只需要:

  1. 线性代数的基础
  2. 了解概率论中“协方差”的概念

阅读本文第三部分只需要:

  1. 有一定的面向对象编程的思想
  2. 对python基础语法有一定的了解
  3. 有一双会查python文档的手

1.人脸识别这回事

1.1我们是怎样认出一张脸的

我们先想想我们一般是怎样认出一张脸的,我们认出一张脸的第一步是,看他,看她。当然,作为一个脸盲症晚期患者,我是没办法做到“只是在茫茫人群中看了你一眼,就再也无法忘记你容颜 ”,所以需要看好多遍才认清一张脸的。

深层次地讲,我们为什么看一张脸很多次,就可以认出一个人的呢?很简单,我们要通过“学习”来认出一张脸,作为一个莫得感情的机器,就是来比对每一张脸的像素值是否接近。但是毕竟都大数据时代了,一张图片少说也有几百万像素,这计算量刷个脸还要几十秒可不太行,机器总要智能点吧。再认真想想,我们认清一张脸,真的会比对一张脸的每一个部分吗?显然不是,哆啦A梦的嘴巴特别大,汤姆猫的下巴特别尖,hello kitty眼睛特别小,我们一下子就把这三只猫给识别出来了,那么,我们凭借的是什么呢?特征!那,机器能不能也靠特征人脸识别呢?

1.2机器该如何认出一张脸

对于一张图片,想想它有什么特征呢?显然,每一个像素点就是一个"特征",例如,对于一张200*200的图片,它有40000个特征,那么,对于机器而言,它要选择哪几个像素点来识别会更好,没有听错,就是“哪几个”。

在这里插入图片描述

所以,我们想象自己的大脑是一台机器,人脸识别的过程就是,第一步,先输入大量的图片,先认清楚这张脸长啥样,在机器学习中,这些数据被称为训练集;第二步,我们通过这么多的图片,来“学习”,就会发现,比较眼睛,鼻子,嘴巴……可以更容易分辨出这个人,在机器学习中,这就是模型的训练 ,举个例子,训练集输入了“哆啦A梦”,“汤姆猫”,“hello kitty”三只猫,然后机器发现了,通过比较嘴巴……可以将其分开,于是就选择了合适的特征了;第三步,机器已经通过“学习”知道了比较这些部位可以识别出一张脸,所以就需要我们输入一些图片来检测它的“学习”效果上述方法被称为特征脸(eigenface)它的数学原理是主成分分析,这种方法单纯比较每张照片差别较大的特征,简称PCA。
在这里插入图片描述

假如我把情况变一下,只需要把“哆啦A梦”,“汤姆猫”,“hello kitty”三只猫分辨出来,那就肯定是,抓住他们不同类之间的特征,他们耳朵上的差别不大 ,所以一般地人脸识别的时候,需要会看五官,而在这种情况下,是不需要看耳朵的。我们仔细想想这个对比过程,假设我们分别有10张不同表情下的哆啦A梦,汤姆猫,hello kitty三只猫的图片,我们通过比较这这三只猫的图片,发现他们区别最大的特征,同时,我们还要确保这个特征在同一只猫的不同表情下都一样,比如,我发现哆啦A梦的嘴巴很大,汤姆猫正常情况下则不是很大,于是,机器就把比这个特征用来决策了……但是汤姆猫在见到杰克的时候,嘴巴张的比哆啦A梦还大,就有可能把汤姆归为哆啦A梦了,还是会造成误差的。为了解决这个问题,我们选取的“好特征”还需要类内差别比较小才行。综上,特征选择的另一个方法就是,使类内区别尽可能小,类间区别尽可能大。这种方法就是线性判别分析,简称LDA。

但是对比一下,想想这两种方法的优劣,前者明显适用性更广,也就是泛化能力较强(通过学习这30张哆啦A梦,汤姆猫,hello kitty的图片,为了学习到一般识别人脸需要的特征),而后者,明显是对于特定的数据集的拟合更好(通过学习这30张哆啦A梦,汤姆猫,hello kitty的图片,只为了把它们区分),所以有可能出现过拟合现象(“读死书”现象),因此后者更适用于有标签的有监督学习,前者适用于无监督或者半监督学习。

过拟合现象即是,由于一个模型训练的样本太少或者是算法问题,导致过于“死板”,举个例子,假如你告诉一个小孩,榕树叶是树叶,小孩子由于他没怎么见过树叶,就误认为树叶一定是无锯齿的,一定是绿色的,所以当他看到枫树叶是红色的时候,他就会认为枫树叶并不是树叶了。

过拟合:
只知道榕树叶是树叶–>树叶是是绿色的
遇到枫树叶—>枫树叶是红色的—>枫树叶不是树叶

当然,以上说法可能有失偏颇,毕竟通过LDA和PCA投影之后,得到的特征的意义是模糊的,也就是说,机器只能分辨出特征的重要性,至于利用的时候,就仅仅是为了保留信息的意义模糊的数据了。

1.3我们该如何“教”机器认出一张脸

好了,现在大概思路已经清楚下来了,我们先来把一大堆图片(训练集)输入给机器,然后机器分析这一大堆图片,他学会了怎么比较图片,然后他就开始用这种方法对付别的图片(也就是测试集),接下来的问题就是,如何通过数学方法“教会”机器。

2.理论:LDA与PCA这回事

2.1数学基础

对于本文中的数学方法,不同于考试,做题,侧重于介绍其含义而非其计算与证明,例如,做矩阵乘法的时候,我们要关心的是,这个矩阵的规模及每个元素的含义,至于值是多少、如何运算,还是留给计算机解决这个问题吧。

2.1.1数据预处理

这里只是简单介绍一下,若要深入了解,可以看这篇文章,我觉得作者讲得挺好的

标准化/归一化:把有量纲量变为无量纲量

1、min-max标准化(离差标准化):

缺点:当有新数据加入时,可能会导致max和min的变化,需要重新定义

2、Z-score标准化(0-1标准化):
〖                                                          x〗^*=  (x-  μ)/σ    (μ为样本均值、σ为样本标准差)
在这里插入图片描述

2.1.2 利用投影来实现降维

先来直观理解,降维这回事
这是位于二维空间的一些数据点
二维空间的数据点
把每个数据点平移到原点附近,即用每个数据点减去其中点,至于为什么要这么做,后面算方差的时候就清楚了,并进行“归一化”,所谓“归一化”即是把数据点的各个维度缩放到[-1,1]的范围中,归一化方法很多,在此不赘述
在这里插入图片描述
发现数据点之间大致分布,选取合适的方向,将数据点投影下去,即可
在这里插入图片描述
最终数据成功地从二维降到了一维
在这里插入图片描述
关于如何投影,假设读者有高中数学的基础,可以按高中数学来理解:
问题:有一数据点(4,5)(4,5)(4,5)e1=(1,0),e2=(0,1)e_1=(1,0),e_2=(0,1)e1=(1,0),e2=(0,1)的平面中现想要将其投影到e1′=(22,22),e2′=(−22,22)e'_1=( \frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2}),e'_2=(-\frac{\sqrt{2}}{2}, \frac{\sqrt{2}}{2})e1=(22,22),e2=(22,22)
解:
设坐标为(x,y)(x,y)(x,y)
根据高中知识,有:x∗22+y∗(−22)=4x*\frac{\sqrt{2}}{2}+y*(-\frac{\sqrt{2}}{2})=4x22+y(22)=4
x∗22+y∗22=5x*\frac{\sqrt{2}}{2}+y*\frac{\sqrt{2}}{2}=5x22+y22=5
则写成矩阵形式有:[22−222222][xy]=[45]\begin{bmatrix} \frac{\sqrt{2}}{2} &-\frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\end{bmatrix}\begin{bmatrix} x\\ y\end{bmatrix}=\begin{bmatrix} 4\\ 5\end{bmatrix}[22222222][xy]=[45]
最后由于规范正交矩阵矩阵的逆与其转置相等,故有:
[xy]=[22−222222]T[45]\begin{bmatrix} x\\ y\end{bmatrix}=\begin{bmatrix} \frac{\sqrt{2}}{2} &-\frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2} & \frac{\sqrt{2}}{2}\end{bmatrix}^T\begin{bmatrix} 4\\ 5\end{bmatrix}[xy]=[22222222]T[45]
故可将向量左乘某个矩阵的转置使其投影到其列空间

2.1.3 寻找最佳降维方向

在这里插入图片描述
从上面的例子可以看出,在投影的时候,关键在于投影到多少维,往哪个方向投影。我们可以再观察一下上面的图, 显然,投影方向是最分散的方向。试想,假如投影方向选择了“密集”的方向,那么带来的后果将是,严重的信息损失。
举个例子,假如有100个数据点,很不幸选择了一个“坏”的特征,即一个“坏”的投影方向,这些点被投影之后,绝大部分重合了,甚至有些靠的太近以至于无法区分,只剩下10个,那么这100个数据点所剩余的信息可能只剩于10个数据点所含的信息了。
那么,在数学上我们是利用什么来衡量数据的“分散程度”呢?
我们选用“方差”来衡量分散程度。

因此,我们只需要使所有投影后的数据的方差最大化即可
另外,对于投影而言,我们投影是为了用尽量少的特征描述全部的信息,假如这些特征有很强的相关性,那么我们有可能可以用其中一个取代另一个,所以我们还需要将数据维度之间的相关性减小,为了衡量不同维度之间的相关性,我们引用了“协方差”的概念

2.1.4协方差与协方差矩阵

在这里插入图片描述
此外,将协方差公式中的b改成a则为方差的公式,至于为何分母为m-1而非m,涉及到数理统计中的无偏估计,不在本文的讨论范围内
在这里插入图片描述
了解了协方差与方差公式后,我们要处理数据需用矩阵,这时,我们便需要协方差矩阵。协方差矩阵的计算公式为:AT∗AA^T*AATA举个例子
在这里插入图片描述
观察易得:
在这里插入图片描述

2.1.5特征值,特征向量以及对角化最大方差

观察上面的协方差矩阵,就会发现,协方差矩阵的对角线元素即为方差,故trace(C)trace(C)trace(C)即为方差之和

特征值与特征向量:
n阶矩阵A的n个特征值是其特征方程∣E−A∣=0|E-A|= 0EA=0的n个根λ1,λ2,…,λnλ_1,λ_2,…,λ_nλ1,λ2,,λn而属于特征值λiλ_iλi的特征向量就是线性方程(λiE−A)x=0(λ_i E-A)x= 0(λiEA)x=0的非零解。
Ax=λxAx=λxAx=λx表明x在经过矩阵A的线性变换后方向不变,只是伸缩了λ倍。

将特征向量看做空间的基向量,则矩阵A就是这些基向量进行伸缩变换时使用的数学运算。给定一个矩阵A,就可以找出对应的基(特征向量),以及通过线性变换(矩阵A),对这些基进行的伸缩变换(特征值)。

我们的目的是为了最大化方差,最小化协方差,故可以将矩阵对角化即可最小化协方差以及最大化方差(当然这样不太严谨,可用下面的瑞利商问题求解或是用拉格朗日乘子法求解)

这时我们选取特征值排序前k大的特征向量,即可组成向量空间,将数据投影到其中即可

此外,协方差矩阵是实对称矩阵,他有以下性质:
实对称矩阵不同特征值对应的特征向量必然正交。
实对称矩阵一定可以对角化

2.1.6瑞利商问题以及广义瑞利商问题(这一部分不懂可跳过)

先来介绍一下埃尔米特(Hermitan)矩阵
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
瑞利商是指这样的函数
R(A,x)/R(A,x)=(xHAx)/(xHx)R(A,x)/R(A,x)=(x^H Ax)/(x^H x)R(A,x)/R(A,x)=(xHAx)/(xHx)
其中x为非零向量,而A为n×n的Hermitan矩阵。,即A^{H} =A。如果我们的矩阵A是实矩阵,则满足A^T=A的矩阵即为Hermitan矩阵。
瑞利商具有如下重要性质:
λmin≤(xHAx)/(xHx)≤λmaxλ_{min}≤(x^H A_x)/(x^H x)≤λ_{max}λmin(xHAx)/(xHx)λmax
它的最大值等于矩阵A最大的特征值,而最小值等于矩阵A的最小的特征值。

当向量x是标准正交基时,即满足xHx=1x^{H} x=1xHx=1时,瑞利商退化为: R(A,x)=xHAxR(A,x)=x^H AxR(A,x)=xHAx

广义瑞利商是指这样的函数R(A,B,x)/R(A,B,x)=(xHAx)/(xHBx)R(A,B,x)/ R(A,B,x)=(x^H Ax)/(x^H Bx)R(A,B,x)/R(A,B,x)=(xHAx)/(xHBx)
其中x为非零向量,而A,B为n×n的Hermitan矩阵,并且B为正定矩阵。
通过标准化可以将广义瑞利商转化为瑞利商的形式。令x=B(−1/2)x′x=B^(-1/2) x'x=B(1/2)x
在这里插入图片描述
而分子转化为:
在这里插入图片描述
此时R(A,B,x)R(A,B,x)R(A,B,x)转化为R(A,B,x′)R(A,B,x')R(A,B,x):
在这里插入图片描述
此时转化为求B−1/2AB−1/2B^{-1/2} AB^{-1/2}B1/2AB1/2特征值和特征向量的问题

2.1.7奇异值分解

先来看看概念介绍(也可跳过直接看例子):

对于矩阵A,求出特征值和特征向量后,有AW=ΛWAW=ΛWAW=ΛW其中WWWAAA的特征向量组成的矩阵,ΛΛΛAAA的特征值组成的对角矩阵。即AAA可以分解成WΛW−1WΛW^{-1}WΛW1再将WWW进行标准化和正交化处理后,WWW满足WTW=IW^T W = IWTW=I则A可以写为WΛWTWΛW^TWΛWT
但以上情况要求A是n×n的方阵,而当A为m×n,m≠n时,如果想要对其进行矩阵分解,就要用到SVD。

SVD实际上是在A的列空间、零空间、行空间和左零空间中找到了两组正交基,使得列空间、零空间中的正交基V经过A变换后等于行空间、左零空间中的正交基U与特征值Λ的乘积,即AV=UΛAV = UΛAV=UΛ A=UΛVTA = UΛV^TA=UΛVT

m×n的矩阵A可以分解为A=UΛVTA=UΛV^TA=UΛVT其中U为m×m矩阵,Λ为m×n对角阵,V为n×n矩阵。U和V均为酉矩阵,即满足UTU=I,VTV=IU^T U = I , V^T V = IUTU=IVTV=I
ATA=VΛUTUΛVT=VΛ2VTA^T A = VΛU^T UΛV^T= VΛ^2 V^TATA=VΛUTUΛVT=VΛ2VTATAA^T AATA的特征值和特征向量可得ΛΛΛVTV^TVT,再由AAT=UΛVTVΛUT=UΛ2UTAA^T = UΛV^T VΛU^T=UΛ^2 U^TAAT=UΛVTVΛUT=UΛ2UTAATAA^TAAT的特征值和特征向量可得UUU。即可得到A=UΛVTA=UΛV^TA=UΛVT

通俗一点理解奇异值分解:跟非方阵矩阵的对角化差不多,因为我们对方阵对角化的时候,是令det(A-λI)=0,而对于非方阵det必定为0,故无解。

还是来看个栗子吧
A=[011110]A=\begin{bmatrix} 0&1\\ 1&1\\1&0\end{bmatrix}A=011110
ATA=[011110][011110]=[2112]A^TA=\begin{bmatrix} 0&1&1\\ 1&1&0\end{bmatrix}\begin{bmatrix} 0&1\\ 1&1\\1&0\end{bmatrix}=\begin{bmatrix} 2&1\\ 1&2\end{bmatrix}ATA=[011110]011110=[2112]
对其对角化:
λ1=3,λ2=1λ_1=3,λ_2=1λ1=3,λ2=1
u1=[2222],u2=[−2222]u_1=\begin{bmatrix} \frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2}\end{bmatrix},u_2=\begin{bmatrix} -\frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2}\end{bmatrix}u1=[2222],u2=[2222]
AAT=[011110][011110]=[110121011]AA^T= \begin{bmatrix} 0&1\\ 1&1\\1&0\end{bmatrix}\begin{bmatrix} 0&1&1\\ 1&1&0\end{bmatrix} = \begin{bmatrix} 1&1&0\\ 1&2&1\\0&1&1\end{bmatrix}AAT=011110[011110]=110121011
对其对角化:

λ1=3,λ2=1,λ3=0λ_1=3,λ_2=1,λ_3=0λ1=3,λ2=1,λ3=0
u1=[666366],u2=[220−22]u3=[33−3333]u_1=\begin{bmatrix} \frac{\sqrt{6}}{6}\\ \frac{\sqrt{6}}{3}\\\frac{\sqrt{6}}{6}\end{bmatrix}, u_2=\begin{bmatrix} \frac{\sqrt{2}}{2}\\0\\ -\frac{\sqrt{2}}{2}\end{bmatrix} u_3=\begin{bmatrix} \frac{\sqrt{3}}{3}\\ -\frac{\sqrt{3}}{3}\\\frac{\sqrt{3}}{3}\end{bmatrix}u1=663666,u2=22022u3=333333

观察一下AATAA^TAAT,其实就是上面讲的协方差矩阵,再观察一下求解过程,非常巧,他们的非零特征值是一样的,而在PCA中,显然,特征值是0的是太小了,不要的。另外,有兴趣的话,可以根据秩与非零特征值的关系证明这并不是巧合

A=UΛVT=[662233630−3366−2233][300100][2222−2222]A=UΛV^T=\begin{bmatrix} \frac{\sqrt{6}}{6} &\frac{\sqrt{2}}{2} &\frac{\sqrt{3}}{3}\\ \frac{\sqrt{6}}{3}&0&-\frac{\sqrt{3}}{3}\\\frac{\sqrt{6}}{6}&-\frac{\sqrt{2}}{2}&\frac{\sqrt{3}}{3}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\\ 0&1\\ 0&0\end{bmatrix} \begin{bmatrix} \frac{\sqrt{2}}{2}&\frac{\sqrt{2}}{2}\\ -\frac{\sqrt{2}}{2}&\frac{\sqrt{2}}{2}\\\end{bmatrix}A=UΛVT=66366622022333333300010[22222222]

然后我们试着删去为0的特征值,及其对应的特征向量,我们采用分块的思想进行运算:
(未删去)
A=UΛ=[662233630−3366−2233][300100]=[666366][30]+[220−22][01]+[33−3333][00]A=UΛ=\begin{bmatrix} \frac{\sqrt{6}}{6} &\frac{\sqrt{2}}{2} &\frac{\sqrt{3}}{3}\\ \frac{\sqrt{6}}{3}&0&-\frac{\sqrt{3}}{3}\\\frac{\sqrt{6}}{6}&-\frac{\sqrt{2}}{2}&\frac{\sqrt{3}}{3}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\\ 0&1\\ 0&0\end{bmatrix} =\begin{bmatrix} \frac{\sqrt{6}}{6}\\ \frac{\sqrt{6}}{3}\\\frac{\sqrt{6}}{6}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\end{bmatrix}+ \begin{bmatrix} \frac{\sqrt{2}}{2}\\ 0\\ -\frac{\sqrt{2}}{2}\end{bmatrix} \begin{bmatrix} 0&1\end{bmatrix}+ \begin{bmatrix} \frac{\sqrt{3}}{3}\\ -\frac{\sqrt{3}}{3}\\\frac{\sqrt{3}}{3}\end{bmatrix} \begin{bmatrix} 0&0\end{bmatrix}A=UΛ=66366622022333333300010=663666[30]+22022[01]+333333[00]
假如把它删去:
A=UΛ=[662263066−22][3001]=[666366][30]+[220−22][01]A=UΛ=\begin{bmatrix} \frac{\sqrt{6}}{6} &\frac{\sqrt{2}}{2} \\ \frac{\sqrt{6}}{3}&0\\ \frac{\sqrt{6}}{6}&-\frac{\sqrt{2}}{2}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\\ 0&1\end{bmatrix} =\begin{bmatrix} \frac{\sqrt{6}}{6}\\ \frac{\sqrt{6}}{3}\\\frac{\sqrt{6}}{6}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\end{bmatrix}+ \begin{bmatrix} \frac{\sqrt{2}}{2}\\ 0\\ -\frac{\sqrt{2}}{2}\end{bmatrix} \begin{bmatrix} 0&1\end{bmatrix}A=UΛ=66366622022[3001]=663666[30]+22022[01]
观察不难发现,二者是完全等价的,删去一个为0的特征值,相当于删去一个零矩阵,对于原矩阵并没有损失,因此,SVD可用于对数据的压缩。具体有何作用,之后再讲。

2.2算法思路

令人头秃的数学基础终于结束了,现在是轻松愉快的算法实现了

2.2.1 PCA-Eigenface算法大体思路

  1. 读入人脸,并进行预处理(归一化和中心化)。
  2. 将人脸拉成一列或者一行,以一行为例,240张46*56图片中,假如这样处理,便可以组成一个240行2576列的图片,每一行的2576个元素依次为2576个特征,例如三个特征可以理解为三维空间的一个点,同理,这个例子就可理解为240个点处于一个2576的空间中。
  3. 对这个矩阵求协方差矩阵
  4. 直接利用刚刚数学原理的成立条件,将特征向量按特征值大小来选取前k个特征向量,组成特征空间,例如,选取200个特征向量,即可组成240*200的特征空间。
  5. 将测试集和训练集同时投影到特征空间中,然后使用KNN分类器进行比对分类,测试准确率
    图片源自论文《改进的 PCA-LDA 人脸识别算法的研究》

2.2.2 PCA-LDA算法的大体思路

  1. PCA的第1~4步
  2. 此时,已经得到了PCA投影的特征空间D(按上面的例子,是240*200的矩阵),再使用LDA,将240张的10类样本,分别求出类内散度矩阵,类间散度矩阵,为了最大化类间散度矩阵,最小化类内散度矩阵利用瑞利商问题进行求解,经过不太复杂的数学推理(见上2.1.5),最终可转化为求B−1/2AB−1/2B^{-1/2} AB^{-1/2}B1/2AB1/2特征值和特征向量的问题
  3. 假设PCA算法选取了200维的特征,形成一个240∗200240*200240200的矩阵,则再利用LDA选择50个特征值,可形成一个240∗50240*5024050的投影矩阵
  4. 将测试集和训练集同时投影到特征空间中,然后使用KNN分类器进行比对分类,测试准确率
    图片源自论文《改进的 PCA-LDA 人脸识别算法的研究》

3. 实战:Python这回事

3.1python下的实现(这一部分采用无微不至的讲解)

由于博主是先写好PCA代码,再添加LDA代码,故有些函数与变量命名可能有些奇怪

直接介绍PCA-LDA的实现,毕竟,把它删去一部分就可以变成LDA或者PCA了

3.1.1.介绍一下引入的模板

import math							##为了使用向下取整函数
import cv2							##为了读入并处理图片
import numpy						##以矩阵的形式处理数据
import operator						##用于使用operator.itemgetter
from sklearn import preprocessing	##emmm归一化的函数懒得写,所以,emmm直接调包

3.1.2.由于python定义常量不是很方便,所以直接定义变量也行

(博主当年刚开始写代码的时候,就是因为代码中出现了太多幻数,结果修改的时候出了bug,活生生熬到差不多凌晨四点

SIZE=(46,56)			##图片的规模
Tr_num_i=40				##数据集中类的数量
Tr_num_j=6				##数据集中每一类用于训练的数量
sum_num_j=10			##数据集中每一类的总数量
dimension_PCA=500		##第一步PCA特征选择的维数
dimension_LDA=10		##第二步LDA特征选择的维数

3.1.3读入人脸图片:

def create(number_1,number_2,start):image_matrix=[]for i in range(1,number_1+1):for j in range(start,number_2+1):image=cv2.imread('orl'+str(i)+'_'+str(j)+'.bmp',cv2.IMREAD_GRAYSCALE)       ##输入图片,i相同为同一类image=cv2.resize(image,SIZE)                                                ##调整大小image_array=image.tolist()                                                  ##图片转换成一维矩阵temp=numpy.array(image_array)image_array2=temp.flatten()image_matrix.append(image_array2)                                           ##把100张图片存起来在一个二维数组中return image_matrix

可以设置断点看看结果(规模为240*2576)
训练集

3.1.4对训练集中心化和归一化(标准化)

中心化函数

def centre(Matrix,num):mean_array = numpy.mean(Matrix, axis=0)  		##求均值mean_array=numpy.tile(mean_array,(num,1))       ##把向量复制成矩阵diff_matrix=Matrix-mean_array                   ##中心化return diff_matrix,mean_array					##返回中心化之后的矩阵和平均矩阵,返回平均矩阵只是在好奇平均脸长啥样

平均脸:
平均脸
归一化(标准化)

Tra_Matrix=numpy.array(Tra_Matrix)				##将数据转为矩阵
Tra_Matrix = preprocessing.scale(Tra_Matrix)	##将数据标准化

看看归一化之后的结果
在这里插入图片描述

3.1.5 生成PCA投影空间

3.1.5.1.中心化并求协方差矩阵

def Train_eigenface(Matrix):diff_matrix, mean_array=centre(Matrix,Tr_num_i*Tr_num_j)	##中心化tran_matrix=numpy.transpose(diff_matrix)					##求矩阵的转置cov=numpy.matmul(tran_matrix,diff_matrix)                   ##求协方差矩阵

查看运行结果:
可以看出,covcovcov是一个2576∗25762576*257625762576的矩阵
在这里插入图片描述

3.1.5.2对协方差矩阵对角化,并对特征向量和特征值排序

    eigenvalues,eigenvectors1=numpy.linalg.eig(cov)eigenvectors=list(eigenvectors1.T)index=numpy.argsort(eigenvalues)

运行查看结果:
在这里插入图片描述
值得注意的是index:
在这里插入图片描述
它是一个索引,尺寸为2576,如图所示 index[2321]=279 则说明,特征值排序为第2322(从0开始计数)的特征向量的下标为279

3.1.5.3根据排序结果进行特征选择,并形成PCA的特征空间

    for i in reversed(index):								##由于之前排序是由小到大,故将index倒序if(i<dimension_PCA):eigenvectors2.append(eigenvectors[i])			##一个一个地加入特征eigenfaces=numpy.matmul(eigenvectors2,diff_matrix.T)	##将训练集投影过去,并生成特征脸return eigenvectors2,eigenfaces.T,mean_array			##返回特征空间和特征脸

运行查看结果:
在这里插入图片描述
根据调试结果,不难看出,原数据从240∗2576240*25762402576被降维成了240∗500240*500240500维(若是PCA,不需要这么高的维数,但是要使用LDA二次选择,因此,选择较高维数)

3.1.6生成LDA投影空间

3.1.6.1将240∗500240*500240500的矩阵分割成40个6∗5006*5006500的矩阵

def LDA(eigenfaces):mean_class_b1={}											##建立一个空的dicttemp=numpy.array(numpy.split(eigenfaces,Tr_num_i,axis=0))	##按8行为一个单位分割for i in range(0,Tr_num_i):if(i!=0):mean_class_b1=numpy.vstack((mean_class_b1,numpy.mean(temp[i],axis=0)))mean_class_b1=numpy.array(mean_class_b1)else:mean_class_b1=numpy.mean(temp[0],axis=0)mean_class_b1=numpy.array(mean_class_b1)
##把这个40*6*500的矩阵求平均值,并复制成240*500的矩阵

运行结果如下:
在这里插入图片描述

3.1.6.2求解SbS_bSb

其实就是直接把公式翻译成代码

mean_class_b1=numpy.array(mean_class_b1)						##转换类型diff_matrix1,mean_array1=centre(mean_class_b1,Tr_num_i)		##中心化sb=numpy.matmul(diff_matrix1.T,diff_matrix1)				##求Sb即类间散度矩阵

运行结果:
在这里插入图片描述

3.1.6.3求解SwS_wSw

    sw=0for i in range(0,Tr_num_i):diff_matrix2,mean_array2=centre(temp[i],Tr_num_j)	##中心化diff_matrix2=numpy.array(diff_matrix2)				sw_temp=numpy.matmul(diff_matrix2.T,diff_matrix2)	##计算每一个类的类内散度矩阵sw+=sw_temp											##求和sw=sw/40												##求均值

运行结果:
在这里插入图片描述

3.1.6.4求解Sb−1SwS_b^{-1}S_wSb1Sw的特征值,并按3.1.5的方法排序,进行选择10维特征

    j_w=numpy.matmul(numpy.linalg.pinv(sw),sb)				##j_w即为Sb^(-1)Sweigenvalues,eigenvectors1=numpy.linalg.eig(j_w)			##对角化eigenvectors=list(eigenvectors1.T)index=numpy.argsort(eigenvalues)eigenvectors2=[]for i in reversed(index):if (i < dimension_LDA):eigenvectors2.append(eigenvectors[i])diff_matrix,mean_array=centre(eigenfaces.T,len(eigenfaces[0]))eigenfaces = numpy.matmul(eigenvectors2, diff_matrix)	##将PCA投影下的数据投影到LDA的投影空间中eigenvectors2=numpy.array(eigenvectors2)				return eigenfaces.T,eigenvectors2						##返回投影后的数据和特征空间

结果如下:
eigenvectors为10∗50010*50010500
在这里插入图片描述
而返回的eigenface2为240∗10240*1024010的矩阵,表示240张人脸的10个特征
在这里插入图片描述

3.1.7以同样的方式读入测试集,并将其投影到特征空间中

def test_martrix(Matrix,eigenvectors1,eigenvecotos2):diff_matrix1,mean_matrix1=centre(Matrix,Tr_num_i*(sum_num_j-Tr_num_j))diff_matrix1=numpy.array(diff_matrix1)test_eigenface1=numpy.matmul(diff_matrix1,eigenvectors1.T)			##投影到PCA空间中diff_matrix2, mean_matrix2 = centre(test_eigenface1, (Tr_num_i*(sum_num_j-Tr_num_j)))diff_matrix2 = numpy.array(diff_matrix2)test_eigenface=numpy.matmul(diff_matrix2,eigenvecotos2.T)			##投影到LDA-PCA空间中return test_eigenface

这个过程相当于160∗2576160*25761602576的矩阵右乘一个2576∗5002576*5002576500的矩阵,得到一个160∗500160*500160500的矩阵,表示160160160张人脸的500500500个特征。再由160∗500160*500160500的矩阵右乘一个500*10的矩阵,得到一个160∗10160*1016010的矩阵,表160160160张人脸的500500500个特征,表示160160160张人脸的500500500个特征
运行结果如下:
在这里插入图片描述

3.1.8 分类并求取准确率及召回率

我们通过以上步骤,已经将数据集(包括训练集和测试集)投影到特征空间中了,接下来,就需要输入一张测试集,假如图片类别属于A它能准确分类,即为准确

3.1.8.1 KNN分类器原理

原理:利用已经标签好的数据集,输入没有标签的新数据,将新数据的每个特征与样本集中数据所对应的特征进行比较,然后选取前K个最相似的数据进行投票,得票数最高的标签即为新数据的分类。

高维数据可以通过PCA算法降维到低维空间,然后利用两点间的距离公式计算距离,将得到的结果作为是否为相似的判别依据。

如图所示,红绿蓝三颜色是已经做好标记的数据,对新输入的黄色点数据可以利用K近邻算法对其进行预测。很明显当K取3时,距离黄色点最近的三点标签均为中等生,因此新输入数据标签也被标为中等生。
但若K取值不同时,对新数据的预测可能会发生变化。

在这里插入图片描述

3.1.8.2 KNN分类器的代码实现

输入并求出测试样本(1个)与训练集中所有的样本(240个)的距离之差

def knn(eigenfaces,test_eigenface,k):row=len(eigenfaces)									##获得训练集的行数,即人脸数量diff=numpy.tile(test_eigenface,(row,1))-eigenfaces	##将测试样本按行复制row次,使之变成同规格的矩阵,随后作差sqr_diff=diff**2									##求距离的平方distance=sqr_diff.sum(axis=1)**0.05					##开方

运行结果如下:
在这里插入图片描述
对距离进行排序,并投票

 sort_distance=distance.argsort()count={}for i in range(0,k):									##投票K次vote=math.floor((sort_distance[i])/Tr_num_j)+1	##由于训练集命名的情况,需向下取整count[vote]=count.get(vote,0)+1         			##原本应该是count[vote]++,这里相当于建立一个键值对,键是vote,值一直++sort_count=sorted(count.items(),key=operator.itemgetter(1),reverse=True)return sort_count[0][0]

运行结果:
sort_distance为在这里插入图片描述
例如,sort_distance[0]=0就说明了,与测试样本最接近的训练样本即为第一个,k=5即说明了要取前k个,向下取整再加1是因为数据集是从1开始计数的而非0

得到了vote,再对vote计数得到count,如图所示:
在这里插入图片描述
count为1:5,说明了最近的5个类别均是1类,故把该样本分为1类

3.1.8.3 测试

测试即是用KNN分类器分出的类别与测试样本本身标签比较,倘若是相同,则准确,否则,为错误

def test(eigenfaces,test_eigenface,k):summ=0.0row=len(test_eigenface)for i in range(0,row):if(knn(eigenfaces,test_eigenface[i],k)==math.floor(i/(sum_num_j-Tr_num_j))+1):summ+=1.0return summ/((sum_num_j-Tr_num_j)*Tr_num_i)

结果如图所示
在这里插入图片描述
在选取10维特征的情况下,有142个分类准确的测试样本,故准确率为142/160

3.2实验结果

一个简单的结果统计
在这里插入图片描述

在这里插入图片描述

可见,对于LDA较PCA充分利用了标签的信息,故识别率高于传统的PCA

彩蛋:SVD优化

显然没有什么彩蛋,这只是个标题党
先来复习一下之前讲过的SVD原理
奇异值分解
先来看看概念介绍(也可跳过直接看例子):

对于矩阵A,求出特征值和特征向量后,有AW=ΛWAW=ΛWAW=ΛW其中WWWAAA的特征向量组成的矩阵,ΛΛΛAAA的特征值组成的对角矩阵。即AAA可以分解成WΛW−1WΛW^{-1}WΛW1再将WWW进行标准化和正交化处理后,WWW满足WTW=IW^T W = IWTW=I则A可以写为WΛWTWΛW^TWΛWT
但以上情况要求A是n×n的方阵,而当A为m×n,m≠n时,如果想要对其进行矩阵分解,就要用到SVD。

SVD实际上是在A的列空间、零空间、行空间和左零空间中找到了两组正交基,使得列空间、零空间中的正交基V经过A变换后等于行空间、左零空间中的正交基U与特征值Λ的乘积,即AV=UΛAV = UΛAV=UΛ A=UΛVTA = UΛV^TA=UΛVT

m×n的矩阵A可以分解为A=UΛVTA=UΛV^TA=UΛVT其中U为m×m矩阵,Λ为m×n对角阵,V为n×n矩阵。U和V均为酉矩阵,即满足UTU=I,VTV=IU^T U = I , V^T V = IUTU=IVTV=I
ATA=VΛUTUΛVT=VΛ2VTA^T A = VΛU^T UΛV^T= VΛ^2 V^TATA=VΛUTUΛVT=VΛ2VTATAA^T AATA的特征值和特征向量可得ΛΛΛVTV^TVT,再由AAT=UΛVTVΛUT=UΛ2UTAA^T = UΛV^T VΛU^T=UΛ^2 U^TAAT=UΛVTVΛUT=UΛ2UTAATAA^TAAT的特征值和特征向量可得UUU。即可得到A=UΛVTA=UΛV^TA=UΛVT

通俗一点理解奇异值分解:跟非方阵矩阵的对角化差不多,因为我们对方阵对角化的时候,是令det(A-λI)=0,而对于非方阵det必定为0,故无解。

还是来看个栗子吧
A=[011110]A=\begin{bmatrix} 0&1\\ 1&1\\1&0\end{bmatrix}A=011110
ATA=[011110][011110]=[2112]A^TA=\begin{bmatrix} 0&1&1\\ 1&1&0\end{bmatrix}\begin{bmatrix} 0&1\\ 1&1\\1&0\end{bmatrix}=\begin{bmatrix} 2&1\\ 1&2\end{bmatrix}ATA=[011110]011110=[2112]
对其对角化:
λ1=3,λ2=1λ_1=3,λ_2=1λ1=3,λ2=1
u1=[2222],u2=[−2222]u_1=\begin{bmatrix} \frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2}\end{bmatrix},u_2=\begin{bmatrix} -\frac{\sqrt{2}}{2}\\ \frac{\sqrt{2}}{2}\end{bmatrix}u1=[2222],u2=[2222]
AAT=[011110][011110]=[110121011]AA^T= \begin{bmatrix} 0&1\\ 1&1\\1&0\end{bmatrix}\begin{bmatrix} 0&1&1\\ 1&1&0\end{bmatrix} = \begin{bmatrix} 1&1&0\\ 1&2&1\\0&1&1\end{bmatrix}AAT=011110[011110]=110121011
对其对角化:

λ1=3,λ2=1,λ3=0λ_1=3,λ_2=1,λ_3=0λ1=3,λ2=1,λ3=0
u1=[666366],u2=[220−22]u3=[33−3333]u_1=\begin{bmatrix} \frac{\sqrt{6}}{6}\\ \frac{\sqrt{6}}{3}\\\frac{\sqrt{6}}{6}\end{bmatrix}, u_2=\begin{bmatrix} \frac{\sqrt{2}}{2}\\0\\ -\frac{\sqrt{2}}{2}\end{bmatrix} u_3=\begin{bmatrix} \frac{\sqrt{3}}{3}\\ -\frac{\sqrt{3}}{3}\\\frac{\sqrt{3}}{3}\end{bmatrix}u1=663666,u2=22022u3=333333

观察一下AATAA^TAAT,其实就是上面讲的协方差矩阵,再观察一下求解过程,非常巧,他们的非零特征值是一样的,而在PCA中,显然,特征值是0的是太小了,不要的。另外,有兴趣的话,可以根据秩与非零特征值的关系证明这并不是巧合

A=UΛVT=[662233630−3366−2233][300100][2222−2222]A=UΛV^T=\begin{bmatrix} \frac{\sqrt{6}}{6} &\frac{\sqrt{2}}{2} &\frac{\sqrt{3}}{3}\\ \frac{\sqrt{6}}{3}&0&-\frac{\sqrt{3}}{3}\\\frac{\sqrt{6}}{6}&-\frac{\sqrt{2}}{2}&\frac{\sqrt{3}}{3}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\\ 0&1\\ 0&0\end{bmatrix} \begin{bmatrix} \frac{\sqrt{2}}{2}&\frac{\sqrt{2}}{2}\\ -\frac{\sqrt{2}}{2}&\frac{\sqrt{2}}{2}\\\end{bmatrix}A=UΛVT=66366622022333333300010[22222222]

然后我们试着删去为0的特征值,及其对应的特征向量,我们采用分块的思想进行运算:
(未删去)
A=UΛ=[662233630−3366−2233][300100]=[666366][30]+[220−22][01]+[33−3333][00]A=UΛ=\begin{bmatrix} \frac{\sqrt{6}}{6} &\frac{\sqrt{2}}{2} &\frac{\sqrt{3}}{3}\\ \frac{\sqrt{6}}{3}&0&-\frac{\sqrt{3}}{3}\\\frac{\sqrt{6}}{6}&-\frac{\sqrt{2}}{2}&\frac{\sqrt{3}}{3}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\\ 0&1\\ 0&0\end{bmatrix} =\begin{bmatrix} \frac{\sqrt{6}}{6}\\ \frac{\sqrt{6}}{3}\\\frac{\sqrt{6}}{6}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\end{bmatrix}+ \begin{bmatrix} \frac{\sqrt{2}}{2}\\ 0\\ -\frac{\sqrt{2}}{2}\end{bmatrix} \begin{bmatrix} 0&1\end{bmatrix}+ \begin{bmatrix} \frac{\sqrt{3}}{3}\\ -\frac{\sqrt{3}}{3}\\\frac{\sqrt{3}}{3}\end{bmatrix} \begin{bmatrix} 0&0\end{bmatrix}A=UΛ=66366622022333333300010=663666[30]+22022[01]+333333[00]
假如把它删去:
A=UΛ=[662263066−22][3001]=[666366][30]+[220−22][01]A=UΛ=\begin{bmatrix} \frac{\sqrt{6}}{6} &\frac{\sqrt{2}}{2} \\ \frac{\sqrt{6}}{3}&0\\ \frac{\sqrt{6}}{6}&-\frac{\sqrt{2}}{2}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\\ 0&1\end{bmatrix} =\begin{bmatrix} \frac{\sqrt{6}}{6}\\ \frac{\sqrt{6}}{3}\\\frac{\sqrt{6}}{6}\end{bmatrix} \begin{bmatrix} \sqrt{3}&0\end{bmatrix}+ \begin{bmatrix} \frac{\sqrt{2}}{2}\\ 0\\ -\frac{\sqrt{2}}{2}\end{bmatrix} \begin{bmatrix} 0&1\end{bmatrix}A=UΛ=66366622022[3001]=663666[30]+22022[01]
观察不难发现,二者是完全等价的,删去一个为0的特征值,相当于删去一个零矩阵,对于原矩阵并没有损失,因此,SVD可用于对数据的压缩。

在PCA的降维中,我们使用了协方差矩阵,但是协方差矩阵是Cov=ATACov=A^TACov=ATA
但是在 SVD中我们发现一个性质就是,AATAA^TAATATAA^TAATA的非零特征值是相同的。
首先 ATAx=0A^TAx=0ATAx=0Ax=0Ax=0Ax=0同解,故他们的秩是一样的
同理有
rank(A)=rank(AT)=rank(AAT)=rank(ATA)rank(A)=rank(A^T)=rank(AA^T)=rank(A^TA)rank(A)=rank(AT)=rank(AAT)=rank(ATA)
ATAx=λx(λ为对角矩阵)A^TAx=λx(λ为对角矩阵)ATAx=λx(λ)
则有AATAx=AλxAA^TAx=AλxAATAx=Aλx
又因为λλλ是对角矩阵
则有AAT(Ax)=λ(Ax)AA^T(Ax)=λ(Ax)AAT(Ax)=λ(Ax)
AATAA^TAATATAA^TAATA的非零特征值是相同的。

那么,这有什么用呢?
回到上面的例子,有2576个特征,也就是说,对角化ATAATAATA的时候,我们计算出了2576个特征值,但是令计算机失望的就是,这2576个特征值里,只有240个是有用的。

抽象地讲,就是向量张成的空间小于其所在的空间,而PCA-LDA的本质就是最小化向量张成的空间,并使用它来取代向量所在的空间。举个例子,有2个点在一个三维空间中,在不改变原点的情况下,这两个点就是在一个平面内,这就说明了,两个三维向量张成的空间为二维空间,从矩阵的形式上看,假如这两个向量是线性无关的,则秩为2。
回到人脸识别的例子假如说有240个2576维的数据点,那么,这些数据点所在的空间即为2576维的空间。而这些数据点张成的空间为240维,也就是说,假如以一个240维的空间描述这些数据点,也是完全无碍的,是可以描述全部信息的。

本质地说,PCA使用的是右奇异矩阵对数据的列进行降维,而左奇异矩阵则是对数据的行进行降维

因此,使用SVD进行降维可大大优化计算量

部分图源网络,侵删
若有写的不清楚的地方,可在评论区讨论
(由于本人水平有限,疏忽错误在所难免,还请各位指正)

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 树莓派科学小实验4B--04_温湿度传感器

    小实验目录 树莓派科学小实验 001 点亮第一盏LED灯 002 点亮LED灯组 003_开关控制LED灯 004_获取温湿度 提示&#xff1a;写完文章后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录小实验目录前言一、实验部件1 实验元器件2 连接的GPIO针脚二、 …...

    2024/4/14 3:01:11
  2. Maven整合Spring,Spring mvc4.1.6,Hibernate4.3.10项目搭建总结

    先上详细的配置文件&#xff0c;在上说明&#xff0c;让大家看完例子后更能清晰的对项目有个认识。 该框架集合的功能模块主要包含以下功能包&#xff1a; guavaAspectJapache commonlogSpringHibernatePOIjacksonoraclequartz 1&#xff0c;web.xml myappcontextConfigLoca…...

    2024/4/20 5:22:44
  3. 热修复原理学习(4)冷启动类加载原理,flutter路由动画

    综上可知&#xff0c;如果类没有在加载时的verifyAndOptimizeClass()的方法打上 CLASS_ISPERVERIFIED/CLASS_ISOPTIMIZED这两个标识&#xff0c;则会在 类的初始化时去执行类的校验和优化。 由于类检验的任务可以认为是很重的&#xff0c;因为会对类的所有方法中的所有指令都做…...

    2024/4/19 0:21:31
  4. 【例6-18】字符串输出函数puts()

    在使用字符串处理函数前&#xff0c;需要在程序开头使用编译预处理命令 #include<string.h> (二)字符串输出函数 puts() 函数调用格式&#xff1a;puts(str); 函数功能&#xff1a;将 str 中存放的字符串输出到显示器&#xff0c;输出时自动把字符串结束标志 \…...

    2024/4/14 3:01:01
  5. Centos7 安装jenkins

    首先需要先安装jdk 安装jdk 1、jdk官网下载地址 https://www.oracle.com/java/technologies/downloads/ 2、下载并上传到虚拟机 3、解压到所需要安装的目录并改名 tar xf jdk-8u321-linux-x64.tar.gz /opt cd /opt mv jdk1.8.0_321 jdk1.8 4、配置环境变量并刷新变量 vim …...

    2024/4/14 3:02:07
  6. 深度解析Android双缓冲绘图技术(值得收藏),面试必备

    何谓缓冲&#xff1f; 在理解双缓冲的原理之前&#xff0c;我们先要明白&#xff0c;什么叫缓冲&#xff1f; 我们可以举一个比较通俗的粟子&#xff0c;比如&#xff1a; 工头给你一个任务&#xff0c;让你把50块大板砖从A处搬到距离你1000米之外的B处去。你心想&#xff0c…...

    2024/4/14 3:01:06
  7. MYSQL 寒假自学 2022 四(一)

    主键约束的相关学习 添加单列主键的第一种方法。 1&#xff0c;加上 primary 类似身份证号&#xff0c;表示这一行。 2&#xff0c;查看该列是否为主键约束&#xff0c; 在设计表中可以看到eid上有一个键。 添加单列主键的第二种方法 加主键和不加主键的区别&#xff0c;即主…...

    2024/4/14 3:01:01
  8. 一起向未来 天威诚信2021年工作总结暨2022年规划大会圆满落幕

    2022年1月24日上午&#xff0c;天威诚信召开了主题为“一起向未来”的2021年工作总结暨2022年规划大会。为响应防疫工作要求&#xff0c;大会采用线上直播形式&#xff0c;由天威诚信副总经理邱志超主持&#xff0c;来自天威诚信北京总公司、上海、深圳、杭州、武汉分公司的全体…...

    2024/4/14 3:01:01
  9. JS基础 数组类型

    阅读目录声明数组创建数组Array.of类型检测类型转换字符串转数组Array.from 将类数组转换为数组展开语法数组合并函数参数节点转换解构赋值基本使用严格模式简洁定义默认值函数参数管理数组元素基本使用扩展语法push 压入元素pop 从末尾弹出元素shift 从数组前面取出一个元素un…...

    2024/4/14 3:01:11
  10. PIE-Engine使用哨兵1影像提取洪水范围

    1 背景 洪涝灾害是突发事件&#xff0c;具有持续时间短、危害性大等特征。基于卫星遥感技术&#xff0c;人们可实现快速、准确的洪涝淹没范围提取&#xff0c;直观地显示其空间分布及其动态变化和发展规律&#xff0c;从而使得其在洪涝灾害监测中发挥着越来越重要的作用。 光…...

    2024/4/14 3:00:51
  11. 线性表-带头结点的单链表

    链表的特点是一种物理存储结构上非连续、非顺序的存储结构。 为了表示每个数据节点与其后继节点之间的逻辑关系&#xff0c;每个节点被分为数据域和指针域。 数据域用来存储当前数据元素的信息&#xff0c;指针域用来存储下一个节点的地址。 下面是带头结点的单链表的结构&a…...

    2024/4/18 20:53:33
  12. 星云Clustar创始人陈凯:攻坚“算力”,让高性能隐私计算成为生产力

    早在进入隐私计算领域之前&#xff0c;作为香港科技大学副教授、智能网络与系统实验室主任的陈凯就已经在研究高性能算力、网络与数据中心&#xff0c;并已经成为该领域知名专家。事实上&#xff0c;在人工智能与大数据时代&#xff0c;更高性能算力的不断突破是至关重要的。 …...

    2024/4/14 3:00:56
  13. DRF 认证(1)

    认证流程 认证过程解析 一、在django中客户端发来的请求会执行视图类的as_view方法&#xff0c;而as_view方法会执行dispatch方法&#xff0c;然后进行反射执行相应的方法&#xff08;get、post等&#xff09;反射&#xff1a;通过字符串的形式操作对象相关的属性 https://www…...

    2024/4/30 7:06:50
  14. 前后端分离---springboot+vue--上传文件

    前端代码展示 <template><div><div><div id"result"></div><h1>{{ msg }}</h1><form><input type"file" change"getFile($event)" /><buttonclass"button button-primary butto…...

    2024/4/15 11:04:53
  15. 【补充】WPF LiveChart 图表详解

    本文主要介绍LiveChart.WPF 中的图表的使用方法 类: 数据绑定, 数据显示样式等。 1、导入LiveChart.Wpf NuGet搜索LiveChart包, 安装LiveChart.Wpf即可。 2、引用LiveChart.Wpf 在使用的界面当中引用LiveChart.Wpf的类库 xmlns:lvc“clr-namespace:LiveCharts.Wpf;assemb…...

    2024/4/7 17:35:20
  16. 怀念大卫·鲍伊David Bowie,个人限量版NFT出炉

    生活总是重复无聊&#xff0c;因此每个人都在寻找突破&#xff0c;因此我们如此欣赏&#xff0c;如此怀念David Bowie。 我们怀念他变幻无穷的曲风&#xff0c;怀念他大胆前卫的造型&#xff0c;怀念他酷炫大气的舞台表演&#xff0c;怀念他不断突破自己的勇气与奇思妙想。 D…...

    2024/4/14 3:01:42
  17. (73)C#里怎么样调用WIN API的函数时传送结构或指针对象

    (73)C#里怎么样调用WIN API的函数时传送结构或指针对象 在C#里开发,当调用WINAPI函数时,需要向函数传送一个结构体作为参数,这时候又需要怎么样来处理呢,这种结构体又需要怎么样定义,是否可以使用类来代替呢?面对这些问题,如果是新手,就是触手无策。到处去寻找方案,…...

    2024/4/14 3:02:02
  18. 2003 - Can‘t connect to MySQL server on ‘*.*.*.*‘ (10060 “Unknown err

    navicat 连接不上服务器上的MySQL 并报错 2003 - Cant connect to MySQL server on *.*.*.* (10060 "Unknown err 最终发现是服务器上的安全组配置未配置3306端口 即可连接成功...

    2024/4/19 11:54:58
  19. 推荐一款可以把MP3语音转化成文字的软件?谢谢

    把mp3文件转换成文本&#xff0c;讯飞的确是一款优秀的软件&#xff0c;但是软件的价格同样不能忽视。测试了很多款语音转文本软件&#xff0c;综合来看&#xff0c;还是要给大家推荐知意字稿。 知意字稿是一款简单、实用且性价比高的转文字工具&#xff0c;帮助用户快速完成在…...

    2024/4/19 19:18:02
  20. 汇编第2课(下),Android开发者跳槽指南

    **作用&#xff1a;**主要用来保存操作数和运算结果等信息&#xff0c;从而节省读取操作数所需占用总线和访问存储器的时间。 二、指针寄存器&#xff08;Pointer Register&#xff09; 80386架构中的指针寄存器有基址寄存器EBP、堆栈指针寄存器ESP和指令指针寄存器EIP。我们…...

    2024/4/14 3:01:37

最新文章

  1. 42.WEB渗透测试-信息收集-域名、指纹收集(4)

    免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;41.WEB渗透测试-信息收集-域名、指纹收集&#xff08;3&#xff09; 关于单域名收集内容…...

    2024/5/5 21:20:35
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. 设计模式——责任链模式13

    责任链模式 每个流程或事物处理 像一个链表结构处理。场景由 多层部门审批&#xff0c;问题分级处理等。下面体现的是 不同难度的问题由不同人进行解决。 设计模式&#xff0c;一定要敲代码理解 传递问题实体 /*** author ggbond* date 2024年04月10日 07:48*/ public class…...

    2024/5/4 19:10:11
  4. 产品推荐 | 中科亿海微推出亿迅®A8000金融FPGA加速卡

    01、产品概述 亿迅A8000金融加速卡&#xff0c;是中科亿海微联合金融证券领域的战略合作伙伴北京睿智融科&#xff0c;将可编程逻辑芯片与金融行业深度结合&#xff0c;通过可编程逻辑芯片对交易行情加速解码&#xff0c;实现低至纳秒级的解码引擎&#xff0c;端到端的处理时延…...

    2024/5/5 8:49:23
  5. 【VTKExamples::Meshes】第七期 TableBasedClipDataSetWithPolyData

    很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享VTK样例TableBasedClipDataSetWithPolyData,并解析接口vtkTableBasedClipDataSet,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你…...

    2024/5/5 8:45:33
  6. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/4 23:54:56
  7. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/4 23:54:56
  8. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  9. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/4 23:55:17
  10. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  11. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  12. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  13. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/4 23:55:16
  14. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  15. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/4 18:20:48
  16. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  17. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  18. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/4 23:55:06
  19. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  20. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  21. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  22. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  23. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  24. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/4 23:55:01
  25. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  26. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  27. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  28. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  29. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  30. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  31. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  32. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  33. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  34. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  35. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  36. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  37. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  38. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  39. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  40. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  41. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  42. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  43. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  44. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  45. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57