DDPM推导笔记

各位佬看文章之前,可以先去看看这个视频,并给这位up主点赞投币,这位佬讲解的太好了:大白话AI

1.前置知识的学习

1.1 正态分布特性

​ (1)正态分布的概率密度函数
f ( x ) = 1 2 π σ e − ( x − μ ) 2 2 σ 2 , 记为 N ( μ , σ 2 ) f(x) = {1 \over \sqrt{2 \pi } \sigma} e^{-{{(x-\mu)^2} \over {2 \sigma^2}}} ,记为N(\mu, \sigma^2) f(x)=2π σ1e2σ2(xμ)2,记为N(μ,σ2)

​ 当 μ = 0 , σ 2 = 1 \mu = 0, \sigma^2=1 μ=0,σ2=1时,则记为标准正态分布,记为 N ( 0 , 1 ) N(0, 1) N(0,1), 又称为高斯分布。

​ (2)正态分布的基本性质
N ( μ 1 , σ 1 2 ) + N ( μ 2 , σ 2 2 ) = N ( μ 1 + μ 2 , σ 1 2 + σ 2 2 ) a ∗ N ( μ , σ ) = N ( a ∗ μ , ( a ∗ σ ) 2 ) N(\mu_1, \sigma_1^2) + N(\mu_2, \sigma_2^2) = N(\mu_1+\mu2, \sigma_1^2+\sigma_2^2) \\ a*N(\mu, \sigma) = N(a*\mu, (a*\sigma)^2) N(μ1,σ12)+N(μ2,σ22)=N(μ1+μ2,σ12+σ22)aN(μ,σ)=N(aμ,(aσ)2)

1.2 贝叶斯定理

A , B A, B A,B是两个随机事件, P ( A ) P(A) P(A)表示 事件 A 事件A 事件A发生的概率, P ( B ∣ A ) P(B|A) P(BA)表示A事件发生的情况下B事件发生的概率,则贝叶斯定理如下:
P ( A ∣ B ) = P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B) = {{P(B|A) * P(A)} \over P(B)} P(AB)=P(B)P(BA)P(A)

2. 前向过程(加噪)

在这里插入图片描述

​ 如图所示,前向过程则是一个加载过程,在每个时间步,都从正态分布中随机采样一个和图片等大的噪声(也可以理解为噪声图片),则加噪过程:
x 1 = β 1 ∗ ϵ 1 + 1 − β 1 ∗ x 0 x_1 = \sqrt{\beta_1} * \epsilon_1 + \sqrt{1-\beta_1} * x_0 x1=β1 ϵ1+1β1 x0
​ 其中 x 0 x_0 x0表示原始图片, ϵ 1 \epsilon_1 ϵ1 表示随机噪声, β 1 \beta_1 β1表示扩散速度, T T T表示扩散的次数,则可以一次推导:
x 1 = β 1 ∗ ϵ 1 + 1 − β 1 ∗ x 0 x 2 = β 2 ∗ ϵ 2 + 1 − β 2 ∗ x 1 x 3 = β 3 ∗ ϵ 3 + 1 − β 3 ∗ x 2 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ x T = β T ∗ ϵ T + 1 − β T ∗ x T − 1 前后关系就可以记为: x t = β t ∗ ϵ t + 1 − β t ∗ x t − 1 x_1 = \sqrt{\beta_1} * \epsilon_1 + \sqrt{1-\beta_1} * x_0 \\ x_2 = \sqrt{\beta_2} * \epsilon_2 + \sqrt{1-\beta_2} * x_1 \\ x_3 = \sqrt{\beta_3} * \epsilon_3 + \sqrt{1-\beta_3} * x_2 \\ ······ \\ x_T = \sqrt{\beta_T} * \epsilon_T + \sqrt{1-\beta_T} * x_{T-1} \\ 前后关系就可以记为: \\ x_t = \sqrt{\beta_t} * \epsilon_t + \sqrt{1-\beta_t} * x_{t-1} \\ x1=β1 ϵ1+1β1 x0x2=β2 ϵ2+1β2 x1x3=β3 ϵ3+1β3 x2⋅⋅⋅⋅⋅⋅xT=βT ϵT+1βT xT1前后关系就可以记为:xt=βt ϵt+1βt xt1
​ 为简化后续运算,令 α t = 1 − β t \alpha_t = 1 - \beta_t αt=1βt, 则有:
x t = 1 − α t ∗ ϵ t + α t ∗ x t − 1 x_t = \sqrt{1- \alpha_t} * \epsilon_t + \sqrt{\alpha_t} * x_{t-1} xt=1αt ϵt+αt xt1

思考:如何能更快的得到 x T x_T xT?因为如果加噪1000步,岂不是要计算1000次上述的运算!好的,下面介绍怎样依赖正态分布的可加性来简化运算,从而推导出 x 0 x_0 x0 x t x_t xt的关系:
由: x t = 1 − α t ∗ ϵ t + α t ∗ x t − 1 x t − 1 = 1 − α t − 1 ∗ ϵ t − 1 + α t − 1 ∗ x t − 2 把 x t − 1 代入到 x t 中可以推导出: x t = 1 − α t ∗ ϵ t + α t ∗ ( 1 − α t − 1 ∗ ϵ t − 1 + α t − 1 ∗ x t − 2 ) = a t ( 1 − a t − 1 ) ∗ ϵ t − 1 + 1 − a t ∗ ϵ t + a t a t − 1 ∗ x t − 2 其中: ϵ t − 1 和 ϵ t 是两个随机噪声,且两者是两个独立的随机变量。 打个比喻:我们有一个骰子掷两次分别得到 ϵ t − 1 和 ϵ t ,完全可以等效 于我们有两个骰子掷一次。即:一个骰子掷两次的概率分布等同于两个骰子掷一次的概率分布,所以 , 如果我们知道两个骰子掷一次的概率分布,然后进行一次采样即可。 由: \\ x_t = \sqrt{1- \alpha_t} * \epsilon_t + \sqrt{\alpha_t} * x_{t-1} \\ x_{t-1} = \sqrt{1- \alpha_{t-1}} * \epsilon_{t-1} + \sqrt{\alpha_{t-1}} * x_{t-2} \\ 把x_{t-1}代入到x_t中可以推导出: \\ x_t = \sqrt{1- \alpha_t} * \epsilon_t + \sqrt{\alpha_t} * (\sqrt{1- \alpha_{t-1}} * \epsilon_{t-1} + \sqrt{\alpha_{t-1}} * x_{t-2}) \\ = \sqrt{a_t(1-a_{t-1})} * \epsilon_{t-1} + \sqrt{1-a_t} * \epsilon_t + \sqrt{a_t a_{t-1}} * x_{t-2} \\ 其中:\epsilon_{t-1} 和 \epsilon_{t} 是两个随机噪声,且两者是两个独立的随机变量。\\ 打个比喻:我们有一个骰子掷两次分别得到\epsilon_{t-1} 和 \epsilon_{t},完全可以等效\\ 于我们有两个骰子掷一次。即:一个骰子掷两次的概率分布等同于两个骰子掷一次的概率分布,所以,\\ 如果我们知道两个骰子掷一次的概率分布,然后进行一次采样即可。 \\ 由:xt=1αt ϵt+αt xt1xt1=1αt1 ϵt1+αt1 xt2xt1代入到xt中可以推导出:xt=1αt ϵt+αt (1αt1 ϵt1+αt1 xt2)=at(1at1) ϵt1+1at ϵt+atat1 xt2其中:ϵt1ϵt是两个随机噪声,且两者是两个独立的随机变量。打个比喻:我们有一个骰子掷两次分别得到ϵt1ϵt,完全可以等效于我们有两个骰子掷一次。即:一个骰子掷两次的概率分布等同于两个骰子掷一次的概率分布,所以,如果我们知道两个骰子掷一次的概率分布,然后进行一次采样即可。

由正态分布的基本性质可知: ϵ t 和 ϵ t − 1 服从 N ( 0 , 1 ) , 即: ϵ t ∼ N ( 0 , 1 ) , ϵ t − 1 ∼ N ( 0 , 1 ) 可以推导出: 1 − a t ∗ ϵ t ∼ N ( 0 , 1 − α t ) a t ( 1 − a t − 1 ) ∗ ϵ t − 1 ∼ N ( 0 , a t − a t ∗ a t − 1 ) ) 由正态分布的基本性质可知:\\ \epsilon_t和\epsilon_{t-1}服从N(0, 1),即:\epsilon_t \sim N(0,1), \epsilon_{t-1} \sim N(0,1) \\ 可以推导出: \sqrt{1-a_t} * \epsilon_t \sim N(0, 1- \alpha_t) \\ \sqrt{a_t(1-a_{t-1})} * \epsilon_{t-1} \sim N(0, a_t-a_t*a_{t-1})) 由正态分布的基本性质可知:ϵtϵt1服从N(0,1),即:ϵtN(0,1),ϵt1N(0,1)可以推导出:1at ϵtN(0,1αt)at(1at1) ϵt1N(0,atatat1))

从而推导出: a t ( 1 − a t − 1 ) ∗ ϵ t − 1 + 1 − a t ∗ ϵ t ∼ N ( 0 , 1 − a t ∗ a t − 1 ) 从而推导出: \\ \sqrt{a_t(1-a_{t-1})} * \epsilon_{t-1} + \sqrt{1-a_t} * \epsilon_t \sim N(0, 1-a_t*a_{t-1}) 从而推导出:at(1at1) ϵt1+1at ϵtN(0,1atat1)

进而推导出: x t = 1 − a t ∗ a t − 1 ∗ ϵ + a t ∗ a t − 1 ∗ x t − 2 , 其中: ϵ ∼ N ( 0 , 1 − a t ∗ a t − 1 ) 进而推导出:\\ x_t = \sqrt{1-a_t*a_{t-1}} * \epsilon + \sqrt{a_t*a_{t-1}}*x_{t-2}, 其中:\epsilon \sim N(0, 1-a_t*a_{t-1}) 进而推导出:xt=1atat1 ϵ+atat1 xt2,其中:ϵN(0,1atat1)

这里就可到了 x t 和 x t − 2 之间的关系,然后依靠上面的方法就可以一次推导出 x t 到 x 0 的关系 ( 数学归纳法证明 ) ,具体如下: x t = 1 − a t a t − 1 a t − 2 . . . a 1 ∗ ϵ + a t a t − 1 a t − 2 . . . a 1 ∗ x 0 其中, ϵ ∼ N ( 0 , 1 − a t a t − 1 a t − 2 . . . a 1 ) 这里就可到了x_t和x_{t-2}之间的关系,然后依靠上面的方法就可以一次推导出x_t到x_0的关系(数学归纳法证明),具体如下: \\ x_t = \sqrt{1 - a_ta_{t-1}a_{t-2}...a_1} * \epsilon + \sqrt{a_ta_{t-1}a_{t-2}...a1} * x_0 \\ 其中,\epsilon \sim N(0, 1 - a_ta_{t-1}a_{t-2}...a_1) 这里就可到了xtxt2之间的关系,然后依靠上面的方法就可以一次推导出xtx0的关系(数学归纳法证明),具体如下:xt=1atat1at2...a1 ϵ+atat1at2...a1 x0其中,ϵN(0,1atat1at2...a1)

为了方便表示 , 记: a ˉ t = a t a t − 1 a t − 2 . . . a 1 则: x t = 1 − a ˉ t ∗ ϵ + a ˉ t x 0 为了方便表示,记: \bar{a}_t = a_ta_{t-1}a_{t-2}...a_1 \\ 则: x_t = \sqrt{1 - \bar{a}_t} * \epsilon + \sqrt{\bar{a}_t} x_0 为了方便表示,记:aˉt=atat1at2...a1则:xt=1aˉt ϵ+aˉt x0

​ 至此,前向过程就记录完成了,我们得到 x 0 到 x t x_0到x_t x0xt的关系,并且可以只通过一次采样就能得到。

3. 反向过程(去噪)

在这里插入图片描述
​ 去噪过程就是从 x T x_T xT一步步反推回 x 0 x_0 x0

3.1 反向原理推导

​ 由贝叶斯定理:
P ( A ∣ B ) = P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B) = {{P(B|A) * P(A)} \over P(B)} P(AB)=P(B)P(BA)P(A)
​ 我们可以令:
由于 x t 到 x t − 1 是一个随机过程,则令: P ( x t − 1 ∣ x t ) : 表示在给定 x t 的情况下, x t − 1 的概率。 套用贝叶斯定理得: P ( x t − 1 ∣ x t ) = P ( x t ∣ x t − 1 ) ∗ P ( x t − 1 ) P ( x t ) 其中, P ( x t ) 和 P ( x t − 1 ) 分别表示 x t 和 t t − 1 的概率 , 也就是从 x 0 原图得到它们的概率。 由于x_t到x_{t-1}是一个随机过程,则令: \\ P(x_{t-1}|x_t): 表示在给定x_t的情况下,x_{t-1}的概率。 \\ 套用贝叶斯定理得: \\ P(x_{t-1} | x_t) = { P(x_t | x_{t-1}) * P(x_{t-1}) \over P(x_t)} \\ 其中,P(x_t)和P(x_{t-1})分别表示x_t和t_{t-1}的概率,也就是从x_0原图得到它们的概率。 由于xtxt1是一个随机过程,则令:P(xt1xt):表示在给定xt的情况下,xt1的概率。套用贝叶斯定理得:P(xt1xt)=P(xt)P(xtxt1)P(xt1)其中,P(xt)P(xt1)分别表示xttt1的概率,也就是从x0原图得到它们的概率。
所以,可以在每个式子后面添加一个先验 x 0 , 即: P ( x t − 1 ∣ x t , x 0 ) = P ( x t ∣ x t − 1 , x 0 ) ∗ P ( x t − 1 ∣ x 0 ) P ( x t ∣ x 0 ) 所以,可以在每个式子后面添加一个先验x0,即: \\ P(x_{t-1} | x_t,x_0) = { P(x_t | x_{t-1},x_0) * P(x_{t-1} | x_0) \over P(x_t | x_0)} \\ 所以,可以在每个式子后面添加一个先验x0,即:P(xt1xt,x0)=P(xtx0)P(xtxt1,x0)P(xt1x0)
有: P ( x t ∣ x t − 1 , x 0 ) 给定 x t − 1 到 x t 的概率。 前向过程中可知: x t = 1 − α t ∗ ϵ t + α t ∗ x t − 1 x t = 1 − a ˉ t ∗ ϵ + a ˉ t x 0 ϵ t 和 ϵ 分别服从 N ( 0 , 1 ) 从而推导出: x t ∼ N ( a t x t − 1 , 1 − a t ) 或: x t ∼ N ( a ˉ t x 0 , 1 − a ˉ t ) 以及: x t − 1 ∼ N ( a ˉ t − 1 x 0 , 1 − a ˉ t − 1 ) 有: \\ P(x_t|x_{t-1}, x_0) 给定x_{t-1}到x_t的概率。 \\ 前向过程中可知: \\ x_t = \sqrt{1- \alpha_t} * \epsilon_t + \sqrt{\alpha_t} * x_{t-1} \\ x_t = \sqrt{1 - \bar{a}_t} * \epsilon + \sqrt{\bar{a}_t} x_0 \\ \epsilon_t和\epsilon分别服从N(0, 1) \\ 从而推导出: \\ x_t \sim N(\sqrt{a_t} x_{t-1}, 1-a_t) \\ 或: \\ x_t \sim N(\sqrt{\bar{a}_t} x_0, 1-\bar{a}_t) \\ 以及: \\ x_{t-1} \sim N(\sqrt{\bar{a}_{t-1}} x_0, 1-\bar{a}_{t-1}) \\ 有:P(xtxt1,x0)给定xt1xt的概率。前向过程中可知:xt=1αt ϵt+αt xt1xt=1aˉt ϵ+aˉt x0ϵtϵ分别服从N(0,1)从而推导出:xtN(at xt1,1at)或:xtN(aˉt x0,1aˉt)以及:xt1N(aˉt1 x0,1aˉt1)

​ 然后就可以把他们分别写成概率密度形式:

​ 然后将概率密度函数带入到贝叶斯定理中,就可以得到:
在这里插入图片描述
​ 化简成高斯分布得:

P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt1xt,x0) =

​ 由此推导出:
在这里插入图片描述
我们的目的是通过 x t 求出 x t − 1 , 然后由 x t − 1 推导出 x t − 2 ⋅ ⋅ ⋅ 直到求出 x 0 , 但现在的式子中出现了 x 0 , 怎么办? 没关系,我们之前由 x t 和 x 0 的关系: x t = 1 − a ˉ t ∗ ϵ + a ˉ t x 0 我们的目的是通过x_t求出x_{t-1},然后由x_{t-1}推导出x_{t-2}···直到求出x_0,\\ 但现在的式子中出现了x_0,怎么办? \\ 没关系,我们之前由x_t和x_0的关系: \\ x_t = \sqrt{1 - \bar{a}_t} * \epsilon + \sqrt{\bar{a}_t} x_0 \\ 我们的目的是通过xt求出xt1,然后由xt1推导出xt2⋅⋅⋅直到求出x0但现在的式子中出现了x0,怎么办?没关系,我们之前由xtx0的关系:xt=1aˉt ϵ+aˉt x0
​ 变换可以得到:

​ 将它带入到 P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt1xt,x0)的概率密度函数中可得:
在这里插入图片描述
​ 它表示的是:对于任意 x t x_t xt的图像都可以用 x 0 x_0 x0加载而来;而只要知道了从 x 0 x_0 x0 x t x_t xt加入的噪声 ϵ \epsilon ϵ,就能得到它前一时刻 x t − 1 x_{t-1} xt1的概率分布,即: P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt1xt,x0)

​ 这里我们就需要使用神经网络,输入 x t x_t xt时刻的图像,预测此图像相对于某个 x 0 x_0 x0原图加入的噪声 ϵ \epsilon ϵ

​ 如图所示,也就是说:



Step1: 在神经网络中,输入 x t x_t xt时刻图像,训练得到此图像相对于某个 x 0 x_0 x0原图加入的噪声 ϵ \epsilon ϵ

Step2: 将噪声 ϵ \epsilon ϵ带入到 x t − 1 x_{t-1} xt1的概率密度函数 P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt1xt,x0)中;

Step3: x t − 1 x_{t-1} xt1的概率密度函数 P ( x t − 1 ∣ x t , x 0 ) P(x_{t-1}|x_t, x_0) P(xt1xt,x0)中随机采样,得到 x t − 1 x_{t-1} xt1(即t-1时刻对应的图像);

Step4: x t − 1 x_{t-1} xt1作为神经网络的输入,带入到Step1中,循环Step1 ~ Step3,知道得到 x 0 x_0 x0

​ DDPM中的神经网络选用的UNet.

​ 至此,结束!

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

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

相关文章

机器学习 | 集成学习

团结就是力量! Ensemble Learning 兼听则明,偏信则暗。 集成学习既是一种思想也是一类算法,它是建立在其他机器学习的算法之上,研究怎么让不同的算法之间进行协同。 既可以监督学习,也可以无监督学习。 集成学习用机器…

本地运行vue脚手架 从下载node开始到创建vue

vue2node 1.安装node vue2版本我node一般使用的是14版本左右 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/f886442c20114e62aef8113425e34ad2.pngnode官网 假如我node版本过低 你就找到控制面板 找到node卸载掉 我一般下载两个版本 安装vue cli vuecl…

element下拉框背景/选中/鼠标移入样式设置

问题在页面内写穿透无效 <style lang"scss" scoped> // 这个有效::v-deep .el-input--mini .el-input__inner {background: transparent;color: #fff;border: 1px solid #093B9E;} </style>直接在标签内写 <style> .el-select-dropdown__list {b…

【uniapp】uniapp中本地存储sqlite数据库保姆级使用教程(附完整代码和注释)

数据库请求接口封装 uniapp中提供了plus.sqlite接口&#xff0c;在这里我们对常用的数据库请求操作进行了二次封装 这里的dbName、dbPath、recordsTable 可以根据你的需求自己命名 module.exports {/** * type {String} 数据库名称*/dbName: salary,/*** 数据库地址* type {…

3842充电器电路图大全

3842充电器电路图&#xff08;一&#xff09; UC3842组成的充电器电路 图1中C1、V1&#xff5e;V4、C2组成滤波整流电路&#xff0c;变压器T为高频变压器&#xff0c;V5、R2、C11组成功率开关管V7的保护电路&#xff0c;NF为供给IC电源的绕组。单端输出IC为UC3842&#xff0c;…

在Linux安装的Docker中开启IPv6

先在Linux中安装docker&#xff0c;然后在docker中开启IPv6。 安装docker 第一步&#xff0c;卸载旧版本docker。 若系统中已安装旧版本docker&#xff0c;则需要卸载旧版本docker以及与旧版本docker相关的依赖项。 命令&#xff1a;yum -y remove docker docker-client do…

Sirius:一款功能强大的通用漏洞扫描工具

关于Sirius Sirius是一款功能强大的通用漏洞扫描工具&#xff0c;该工具可以帮助广大研究人员在大多数场景下识别和验证应用程序中存在的安全漏洞。 现如今&#xff0c;信息安全社区仍然是收集网络安全情报数据最佳且最有利的来源&#xff0c;而且社区本身的表现经常会优于商…

SparkSQL的编程模型(DataFrame和DataSet)

1.2 SparkSQL的编程模型(DataFrame和DataSet) 1.2.1 编程模型简介 主要通过两种方式操作SparkSQL&#xff0c;一种就是SQL&#xff0c;另一种为DataFrame和Dataset。 SQL SQL不用多说&#xff0c;就和Hive操作一样&#xff0c;但是需要清楚一点的时候&#xff0c;SQL操作的是…

C#联合halcon开发,连接相机颜色不对,无法连接相机

相机可以在海康软件MVS中打开&#xff08;颜色正常&#xff09;&#xff0c;但是在C#开发的程式中无法打开&#xff08;彩色相机颜色显示异常&#xff09;。 1.异常处理 1.查看相机和MVS软件是否连接成功&#xff1b; 2.如果成功&#xff0c;连接C#程序&#xff1b; 3.程序连接…

usb端口管理软件有哪些(usb端口管理软件)

USB端口管理软件在当今的计算机使用中扮演着越来越重要的角色。随着USB设备的普及&#xff0c;如U盘、移动硬盘、数码相机等&#xff0c;相应的管理软件也变得越来越受欢迎。 1、USB端口管理软件可以帮助用户更好地管理和控制U盘的使用。 在插入U盘时&#xff0c;软件可以自动…

GEE:基于MCD64A1的GlobFire火灾斑块检测数据集

作者&#xff1a;CSDN _养乐多_ 本文将介绍 Google Earth Engine&#xff08;GEE&#xff09;上存档的 JRC/GWIS/GlobFire/v2/FinalPerimeters 数据集。 文章目录 一、背景介绍1.1 MCD64A1数据集1.2 GlobFire1.3 参考文献1.4 GEE上存档 二、案例代码2.1 查看所有数据ID2.2 可…

Python---TCP 网络应用程序开发流程

1. TCP 网络应用程序开发流程的介绍 TCP 网络应用程序开发分为: TCP 客户端程序开发TCP 服务端程序开发 说明: 客户端程序是指运行在用户设备上的程序 服务端程序是指运行在服务器设备上的程序&#xff0c;专门为客户端提供数据服务。 2. TCP 客户端程序开发流程的介绍 步…

java并发编程三 共享内存的问题和synchronized解决方案

文章目录 共享带来的问题synchronized 解决方案方法上的 synchronized 共享带来的问题 小故事 老王&#xff08;操作系统&#xff09;有一个功能强大的算盘&#xff08;CPU&#xff09;&#xff0c;现在想把它租出去&#xff0c;赚一点外快 小南、小女&#xff08;线程&…

世微 AP5186 3.6-100V 三功能降压恒流LED驱动IC

产品描述 AP5186 是一款集成三功能的开关降压型 LED 恒流驱动器。通过电源的接通与关断可实现 功能之间的切换&#xff1a;100%全亮→25%暗亮→爆闪。 AP5186 内部还集成了 VDD 稳压管&#xff0c;过温保护电路&#xff0c;短路保护电路等&#xff0c;用少量的元器 件即可提供…

Pip:基本命令和使用的指南,实现有效的包管理

目录 学习目标&#xff1a; 学习内容&#xff1a; 学习时间&#xff1a; 学习产出&#xff1a; 介绍 Pip 工具&#xff1a;Pip 是 Python 包管理工具&#xff0c;可以帮助用户方便地安装、管理和升级 Python 包&#xff1a; 安装 Pip 工具&#xff1a;学习如何在不同操作系统上…

国产系统-银河麒麟桌面版系统进入root用户

系统版本 :::warning 银河麒麟桌面版操作系统V10 ::: 方式1 :::warning sudo suroot即便设置了密码,这种方式也可以进入 ::: demodemo-pc:~/桌面$ sudo su 输入密码 rootdemo-pc:/home/demo/桌面#方式2 :::warning root用户设置了密码,直接su root进入 ::: root设置密码 …

用模型预测测试数据

Hi, I’m Shendi 2、用模型预测测试数据 在之前已经训练好了一个模型&#xff0c;可以通过 model.save("path") 来保存模型到硬盘&#xff0c;下次直接使用。 这个模型使用的 mnist 数据集训练&#xff0c;这个数据集包含6万训练样本和一万测试样本&#xff0c;28*28…

12 Vue3中使用v-if指令实现条件渲染

概述 v-if指令主要用来实现条件渲染&#xff0c;在实际项目中使用得也非常多。 v-if通常会配合v-else-if、v-else指令一起使用&#xff0c;可以达到多个条件执行一个&#xff0c;两个条件执行一个&#xff0c;满足一个条件执行等多种场景。 下面&#xff0c;我们分别演示这三…

SAP ABAP SCREEN日期字段添加搜索帮助

文章目录 前言 前言 有时我们在自定义屏幕中添加了日期的输入框没有带出F4搜索帮助&#xff0c;如下设置 为字段手动添加一个搜索帮助BU_DATE_CHAR

mybatis-plus-枚举处理

properties文件的配置 //加载处理枚举类型处理的包路径 mybatis-plus.typeEnumsPackagecom.common.base.enums.** yaml配置文件的配置 # MP 配置 mybatis-plus: # type-enums-package: com.baomidou.mybatisplus.samples.enums.enumsconfiguration:# 3.0.8之前版本问题默认将…
最新文章