【论文阅读】伸缩密度比估计:Telescoping Density-Ratio Estimation

文章目录

  • 一、文章概览
    • (一)问题提出
    • (二)文章工作
  • 二、判别比估计和密度鸿沟问题
  • 三、伸缩密度比估计
    • (一)核心思想
    • (二)路标创建
    • (三)桥梁构建
    • (四)TRE应用于互信息估计
    • (五)TRE 应用于基于能量的建模
  • 四、实验
    • (一)1维峰值比率的设置及TRE的表现
    • (二)高维度比率问题及TRE在大互信息(MI)估计中的表现
    • (三)SpatialMultiOmniglot 上的 MI 估计和表示学习
    • (四)MNIST 上基于能量的建模


一、文章概览

(一)问题提出

密度比估计:

  • 通过密度比估计进行的无监督学习是机器学习中的一个强大范例,是该领域重大进展的源泉
  • 根据数据样本估计p/q比率,而不单独估计分子和分母。

判别性密度比估计:

  • 训练神经网络分类器来区分两组样本,因为对于许多损失函数,可以从最佳分类器中提取 p/q 比值。
  • 这种判别性方法在多个领域中产生了先进的结果,是无监督学习的基石。

密度鸿沟问题:

  • 在两个密度显著不同的情况下,分类器就可以通过相对较差的密度比估计来获得几乎完美的精度。
  • 实验表明,每当 p 和 q 之间的KL散度超过几十自然单位时,这种情况尤为明显。

(二)文章工作

伸缩密度比估计(TRE) 框架:

  • 用于克服密度鸿沟问题,实现在高维空间中准确估计高度不同的密度之间的比率
  • 采用由两个步骤组成的“分而治之”策略:
    • 第一步是逐渐将 p 中的样本传输到 q 中的样本,创建中间数据集链
    • 然后估计沿着这条链的连续数据集之间的密度比,与原始比率 p/q 不同,这些“链式比率”可以通过分类准确估计
    • 最后通过伸缩乘积组合链式比率以获得原始密度比 p/q 的估计。

实验证明,TRE 相对于现有的单一比率方法在互信息估计、表示学习和能量基建模等任务中能够显著改善表现。

  • 在互信息估计的背景下,TRE 可以准确估计 30+ nat 的大 MI 值
  • 表示学习实验结果证实,TRE 比一系列现有的单比率基线提供了显着的收益
  • 基于能量的建模背景下,TRE 可以被视为噪声对比估计 的扩展,可以更有效地扩展到高维数据。

二、判别比估计和密度鸿沟问题

假设p和q是有样本的两个密度,满足 p ( x ) > 0 p(x)>0 p(x)>0 q ( x ) > 0 q(x)>0 q(x)>0,可以估计密度比 r ( x ) = p ( x ) / q ( x ) r(x)=p(x)/q(x) r(x)=p(x)/q(x) 来区分 p p p q q q中的样本。分类器的损失假设为广泛使用的逻辑损失:
L ( θ ) = − E x 1 ∼ p log ⁡ ( r ( x 1 ; θ ) 1 + r ( x 1 ; θ ) ) − E x 2 ∼ q log ⁡ ( 1 1 + r ( x 2 ; θ ) ) L(\theta)=-E_{x_1\sim p}\log (\frac{r(x_1;\theta)}{1+r(x_1;\theta)})-E_{x_2\sim q}\log (\frac{1}{1+r(x_2;\theta)}) L(θ)=Ex1plog(1+r(x1;θ)r(x1;θ))Ex2qlog(1+r(x2;θ)1)
其中 r ( x ; θ ) r(x;\theta) r(x;θ)是非负比率估计模型,为了强制非负性, r r r通常表示为无约束函数的指数。

密度鸿沟问题:

  • 可能的误差来源有很多:
    • 使用错误指定的模型
    • 不完善的优化算法
    • 上式中的期望的蒙特卡洛近似所产生的不准确性

由于样本量有限而产生的蒙特卡罗误差实际上足以引发密度鸿沟问题,如果我们使用n=10000的样本量并最小化有限样本损失,最终得到的估计值 θ ^ \hat{\theta} θ^ 就会远离渐近极小值 θ ∗ = a r g m i n L ( θ ) \theta^*=argmin L(\theta) θ=argminL(θ)
L n ( θ ) = ∑ i = 1 n − log ⁡ ( r ( x 1 i ; θ ) 1 + r ( x 1 i ; θ ) ) − log ⁡ ( 1 1 + r ( x 2 i ; θ ) ) , x i i ∼ p , x 2 i ∼ q L^n(\theta)=\sum_{i=1}^n -\log (\frac{r(x_1^i;\theta)}{1+r(x_1^i;\theta)})-\log (\frac{1}{1+r(x_2^i;\theta)}), \ x_i^i\sim p,x_2^i\sim q Ln(θ)=i=1nlog(1+r(x1i;θ)r(x1i;θ))log(1+r(x2i;θ)1), xiip,x2iq

对不同的样本量重复相同的实验,可以凭经验测量该方法的样本效率.对于绘制的情况,我们看到样本量的指数增加只会导致估计值线性下降错误。这一经验结果与理论结果一致,即基于密度比的 KL 散度下限仅对于 nats 数量呈指数级的样本大小是严格的。
在这里插入图片描述

三、伸缩密度比估计

(一)核心思想

为了方便起见,进行如下符号转换: p = = p 0 p == p_0 p==p0 q = = p m q == p_m q==pm ,并通过伸缩乘积扩展比率:
p 0 ( x ) p m ( x ) = p 0 ( x ) p 1 ( x ) p 1 ( x ) p 2 ( x ) . . . p m − 2 ( x ) p m − 1 ( x ) p m − 1 ( x ) p m ( x ) \frac{p_0(x)}{p_m(x)}=\frac{p_0(x)}{p_1(x)}\frac{p_1(x)}{p_2(x)}... \frac{p_{m-2}(x)}{p_{m-1}(x)}\frac{p_{m-1}(x)}{p_m(x)} pm(x)p0(x)=p1(x)p0(x)p2(x)p1(x)...pm1(x)pm2(x)pm(x)pm1(x)

理想情况下, p k p_k pk 能使分类器无法轻松将其与其两个相邻密度区分开。因此,该方法的两个关键组成部分是:

  • 路标创建:将样本 { x 0 1 , . . . , x 0 n } \{x_0^1,...,x_0^n\} {x01,...,x0n} p 0 p_0 p0分布逐渐转换到分布为 p m p_m pm的样本 { x m 1 , . . . , x m n } \{x_m^1,...,x_m^n\} {xm1,...,xmn}。转换的每一步会获得一个新数据集 { x k 1 , . . . , x k n } \{x_k^1,...,x_k^n\} {xk1,...,xkn},每个中间数据集都可以被视为来自隐式分布 p k p_k pk 的样本,可称为路标分布。
  • 桥梁构建:桥梁构建方法涉及学习一组参数化的密度比率,这些比率是在连续的分布对之间估算的。用数学符号表示为 r k ( x ; θ k ) ≈ p k ( x ) p k + 1 ( x ) r_k(x;\theta_k)\approx \frac{p_k(x)}{p_{k+1}(x)} rk(x;θk)pk+1(x)pk(x),其中 k = 0 , . . . , m − 1 k=0,...,m-1 k=0,...,m1,每个 r k r_k rk都是一个非负函数,被称为桥梁。

然后通过桥的乘积给出原始比率的估计:
r ( x ; θ ) = ∏ k = 0 m − 1 r k ( x ; θ k ) ≈ ∏ k = 0 m − 1 p k ( x ) p k + 1 ( x ) = p 0 ( x ) p m ( x ) r(x;\theta)=\prod_{k=0}^{m-1}r_k(x;\theta_k)\approx \prod_{k=0}^{m-1}\frac{p_k(x)}{p_{k+1}(x)}=\frac{p_0(x)}{p_m(x)} r(x;θ)=k=0m1rk(x;θk)k=0m1pk+1(x)pk(x)=pm(x)p0(x)

其中 θ θ θ 是所有 θ k θ_k θk 向量的串联。

(二)路标创建

考虑两种简单的、确定性的路标创建机制:线性组合和维度混合。

线性组合: 给定一个随机对 x 0 ∼ p 0 x_0 \sim p_0 x0p0 x m ∼ p m x_m \sim p_m xmpm,通过以下方式定义第 k k k 个路标:
x k = 1 − α k 2 x 0 + α k x m , k = 0 , . . . , m x_k=\sqrt{1-\alpha_k^2}x_0+\alpha_kx_m,\ k=0,...,m xk=1αk2 x0+αkxm, k=0,...,m
其中 α k α_k αk形成从0到1递增的序列,用于控制 x k x_k xk x 0 x_0 x0的距离。

维度混合: 将两个向量的不同维度子集进行拼接。给定一个长度为 d d d 的向量 x x x ,将其划分为 m m m 个长度为 d / m d/m d/m 的子向量,表示为 x = ( x [ 1 ] , . . . , x [ m ] ) x = (x[1], ..., x[m]) x=(x[1],...,x[m]),每个 x [ i ] x[i] x[i]的长度为 d / m d/m d/m 。使用此表示法下,可以通过以下方式定义第 k 个路标:
x k = ( x m [ 1 ] , . . . , x m [ k ] , x 0 [ k + 1 ] , . . . , x 0 [ m ] ) , k = 0 , . . . , m x_k=(x_m[1],...,x_m[k],x_0[k+1],...,x_0[m]),\ k=0,...,m xk=(xm[1],...,xm[k],x0[k+1],...,x0[m]), k=0,...,m

(三)桥梁构建

每个桥 r k ( x ; θ k ) r_k(x; θ_k) rk(x;θk) 都可以使用逻辑损失函数通过二元分类来学习。因此,解决这个分类任务集合是一个多任务学习 (MTL) 问题, MTL 中的两个关键问题是如何共享参数和如何定义联合目标函数。

参数共享:
将桥 r k ( x ; θ k ) r_k(x; θ_k) rk(x;θk) 的构造分为两个阶段:

  • 共享的隐藏向量 f k ( x ) f_k(x) fk(x)
    • 是一个深度神经网络,其参数在不同的桥梁 r k r_k rk中是共享的
    • 每个桥梁有自己的预激活尺度和偏置,用于每个隐藏单元
  • 头部映射:
    • 将隐藏向量 f k ( x ) f_k(x) fk(x)映射到标量 log ⁡ r k ( x ; θ k ) \log r_k(x;\theta_k) logrk(x;θk)
    • 映射可以是线性的或者二次的,具体的参数化根据实验的具体情况而定

TRE 损失函数:

  • TRE 损失函数由 m 个逻辑损失的平均值给出:
    L T R E ( θ ) = 1 m ∑ k = 0 m − 1 L k ( θ k ) L k ( θ k ) = − E x k ∼ p k log ⁡ ( r k ( x k ; θ k ) 1 + r k ( x k ; θ k ) ) − E x k + 1 ∼ q k + 1 log ⁡ ( 1 1 + r ( x k + 1 ; θ k ) ) L_{TRE}(\theta)=\frac{1}{m}\sum_{k=0}^{m-1}L_k(\theta_k)\\ L_k(\theta_k)=-E_{x_k\sim p_k}\log (\frac{r_k(x_k;\theta_k)}{1+r_k(x_k;\theta_k)})-E_{x_{k+1}\sim q_{k+1}}\log (\frac{1}{1+r(x_{k+1};\theta_k)}) LTRE(θ)=m1k=0m1Lk(θk)Lk(θk)=Exkpklog(1+rk(xk;θk)rk(xk;θk))Exk+1qk+1log(1+r(xk+1;θk)1)

  • 训练中的样本分配与潜在问题:

    • 在训练过程中,每个比率估计器 r k r_k rk会看到不同的样本: r 0 r_0 r0会看到接近真实数据的样本,即从 p 0 p_0 p0 p 1 p_1 p1中采样的样本;最终的比率 r m − 1 r_{m-1} rm1则会看到来自 p m − 1 p_{m-1} pm1 p m p_m pm的样本
    • 这种训练样本分配方式可能会在训练和部署之间造成不匹配的问题。因为在学习之后,我们希望在相同的输入 x x x 上评估所有的比率 r k r_k rk,然而每个比率估计器在训练期间看到的输入分布不同,这可能导致在新测试点上的泛化能力受到影响。

实验结果没有显示这种不匹配是一个问题,这表明尽管在训练期间看到不同的输入,每个比率都能够推广到新的测试点。我们推测,这种泛化是通过参数共享来促进的,这使得每个比率估计器都可以间接地受到来自所有路标分布的样本的影响。尽管如此,对这个泛化问题进行更深入的分析值得进一步开展工作。

(四)TRE应用于互信息估计

两个随机变量 u u u v v v 之间的互信息 (MI) 可以写为:
I ( u , v ) = E p ( u , v ) [ log ⁡ r ( u , v ) ] , r ( u , v ) = p ( u , v ) p ( u ) p ( v ) I(u,v)=E_{p(u,v)}[\log r(u,v)],\ r(u,v)=\frac{p(u,v)}{p(u)p(v)} I(u,v)=Ep(u,v)[logr(u,v)], r(u,v)=p(u)p(v)p(u,v)

从联合密度和边际乘积生成样本:
从联合密度 p ( u , v ) p(u,v) p(u,v)中获取样本 ( u , v ) (u,v) (u,v),通过将数据集中的 v v v 向量打乱,可以从边际乘积 p ( u ) p ( v ) p(u)p(v) p(u)p(v)中获取样本。具体来说,我们保留 u u u 不变,将 v v v 在数据集中进行随机重排。

路标样本的生成:
为了执行TRE(密度比率估计),我们需要生成路标样本:
先从联合密度 p ( u , v ) p(u,v) p(u,v)中获取一个样本 x 0 = ( u , v 0 ) x_0=(u,v_0) x0=(u,v0),从边际乘积 p ( u ) p ( v ) p(u)p(v) p(u)p(v) 中取一个样本 x m = ( u , v m ) x_m=(u,v_m) xm=(u,vm),其中 u u u 保持固定,仅 v v v 不变,然后使用路标构建机制来生成中间路标样本 x k = ( u , v k ) x_k=(u,v_k) xk=(u,vk),其中 k = 0 , . . . , m k=0,...,m k=0,...,m

(五)TRE 应用于基于能量的建模

基于能量的模型 (EBM) 是一个灵活的非负函数参数族 { ϕ ( x ; θ ) } \{\phi(x; θ)\} {ϕ(x;θ)},其中每个函数与概率密度成正比。给定密度为 p ( x ) p(x) p(x) 的数据分布样本,基于能量的建模的目标是找到一个参数 θ ∗ θ^* θ,使得 ϕ ( x ; θ ∗ ) \phi(x; θ^*) ϕ(x;θ)近似于 c p ( x ) cp(x) cp(x) ,其中 c c c为一个正常数。

本文作者考虑 ϕ ( x ; θ ) = r ( x ; θ ) q ( x ) \phi(x; θ)=r(x;\theta)q(x) ϕ(x;θ)=r(x;θ)q(x) q q q是可以从中采样的已知密度(例如高斯流或归一化流),而 r r r 是一个无约束的正函数。给定这个参数化,最优 r r r 简单地等于密度比 p ( x ) / q ( x ) p(x)/q(x) p(x)/q(x),因此学习 EBM 的问题变成了估计密度比的问题,这可以通过 TRE 来解决。由于 TRE 实际上估计比率乘积,因此最终EBM的形式为:
ϕ ( x ; θ ) = ∏ k = 0 m − 1 r k ( x ; θ k ) q ( x ) \phi(x;\theta)=\prod_{k=0}^{m-1}r_k(x;\theta_k)q(x) ϕ(x;θ)=k=0m1rk(x;θk)q(x)

四、实验

(一)1维峰值比率的设置及TRE的表现

实验设置:

  • 使用单参数二次分类器的极端峰值高斯 p (σ = 10−6) 和宽高斯 q (σ = 1) 之间的密度比估计
    在这里插入图片描述
  • 使用二次形式的桥梁,其中 b k b_k bk设置为其真实值,而 w k w_k wk被重新参数化为 e x p ( θ k ) exp(\theta_k) exp(θk)以避免出现不必要的对数尺度。
    log ⁡ r k ( x ) = w k x 2 + b k \log r_k(x)=w_kx^2+b_k logrk(x)=wkx2+bk

实验结果:

  • 样本效率:TRE在使用100个样本时就获得了比单一比率估计使用100,000个样本更好的解决方案,显示出三数量级的改进。
  • 准确性提升:通过样本效率曲线,可以清楚地看到TRE在所有样本规模下都具有显著的准确性提升。
    在这里插入图片描述

(二)高维度比率问题及TRE在大互信息(MI)估计中的表现

实验设置:

  • x ∈ R 2 d x\in R^{2d} xR2d是一个高斯随机变量,具有块对角协方差矩阵。每个块是2x2的矩阵,对角线上为1,非对角线上为0.8,目标是估计这个高斯分布与标准正态分布之间的比率。
  • 使用二次形式桥梁,其中 W k W_k Wk是对称矩阵, b k b_k bk是偏置项
    log ⁡ r k ( x ) = x T W k x + b k \log r_k(x)=x^TW_kx+b_k logrk(x)=xTWkx+bk

实验结果:
单一比率估计在MI值大于20 nats时变得非常不准确,相比之下,TRE能够准确估计高达80 nats的MI值,即使对于320维的变量也是如此。
在这里插入图片描述

(三)SpatialMultiOmniglot 上的 MI 估计和表示学习

实验设置:

  • SpatialMultiOmniglot问题源于Omniglot数据集,其中字符被空间排列成一个 n × n n \times n n×n 的网格,每个网格位置包含来自固定字母表的字符。在此设置中,每个网格位置被视为一个类别随机变量,其实现是相应字母表中的字符。我们形成的网格对 ( u , v ) (u,v) (u,v) 使得对应的网格位置包含按字母顺序排列的字符。根据这种设置,可以计算出真实的MI值。
  • 每个桥梁使用的可分离架构形式如下,其中 g g g f k f_k fk是14层卷积ResNets, f k f_k fk使用了参数共享方案。
    log ⁡ r k ( u , v ) = g ( u ) T W k f k ( v ) \log r_k(u,v)=g(u)^TW_kf_k(v) logrk(u,v)=g(u)TWkfk(v)
  • 路标构建使用按维度混合机制,其中 m = n 2 m=n^2 m=n2,即一次混合一个维度。

实验结果:

  • MI估计(左图):结果显示,只有TRE能够准确估计高达约35 nats的高MI值。
  • 表示学习(右图):随着网格中字符数量的增加(即MI的增加),所有单一密度比率基线的性能显著下降。相比之下,TRE始终获得超过97%的准确率。

在这里插入图片描述

(四)MNIST 上基于能量的建模

能量模型的形式:
ϕ ( x ; θ ) = ∏ k = 0 m − 1 r k ( x ; θ k ) q ( x ) \phi(x;\theta)=\prod_{k=0}^{m-1}r_k(x;\theta_k)q(x) ϕ(x;θ)=k=0m1rk(x;θk)q(x)
其中 q q q是预先指定的“噪声”分布,从中可以进行采样,比率的乘积由TRE给出。

实验设置:

  • 使用MNIST手写数字数据集,每个样本是28x28像素的灰度图像,代表一个手写数字。
  • 考虑三种噪声分布的选择:多变量高斯分布、高斯copula、有耦合层的有理二次神经样条流(RQ-NSF)
  • 每种噪声分布都首先通过最大似然估计拟合到数据上。

TRE中构建路标:
每种噪声分布可以表示为标准正态分布的可逆变换。也就是说每个随机变量可以表示为 F ( z ) F(z) F(z),其中 z ∼ N ( 0 , I ) z\sim N(0,I) zN(0,I)。我们可以在z-空间中通过线性组合方式生成路标,然后映射回x-空间,进而得到:
x k = F ( 1 − α k 2 F − 1 ( x 0 ) + α k F − 1 ( x m ) ) x_k=F(\sqrt{1-\alpha_k^2}F^{-1}(x_0)+\alpha_kF^{-1}(x_m)) xk=F(1αk2 F1(x0)+αkF1(xm))

能量基准模型的构建:
每个桥梁 r k ( x ) r_k(x) rk(x)的形式为:
log ⁡ r k ( x ) = − f k ( x ) T W k f k ( x ) − f k ( x ) T b k − c k \log r_k(x)=-f_k(x)^TW_kf_k(x)-f_k(x)^Tb_k-c_k logrk(x)=fk(x)TWkfk(x)fk(x)Tbkck
其中 f k ( x ) f_k(x) fk(x)是一个18层卷积ResNet, W k W_k Wk被约束为正定矩阵。这个约束确保了EBM的对数密度有一个上限。

  • 通过表格中的估计对数似然来定量评估学习到的EBM模型。
    在这里插入图片描述
  • 通过下图中从模型中随机采样的样本来进行定性评估
    在这里插入图片描述
    从上述结果可以看出,对于简单的噪声分布选择,单一比率估计在高维情况下表现不佳,只有在使用复杂的神经密度估计器(如RQ-NSF)时表现良好。相比之下,TRE在所有噪声选择中都显示出改进,这通过近似对数似然和样本的视觉保真度来衡量。特别是在高斯噪声分布下,TRE的改进尤为显著:每维比特数(bits per dimension, bpd)大约降低了0.66,对应着大约360 nats的改进。此外,生成的样本显著更加连贯,并且在视觉保真度上比RQ-NSF样本要好。

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

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

相关文章

Linux 生产消费者模型

💓博主CSDN主页:麻辣韭菜💓   ⏩专栏分类:Linux初窥门径⏪   🚚代码仓库:Linux代码练习🚚   🌹关注我🫵带你学习更多Linux知识   🔝 前言 1. 生产消费者模型 1.1 什么是生产消…

每日一题——Python实现PAT乙级1005 继续(3n+1)猜想(举一反三+思想解读+逐步优化)五千字好文

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三Python编程学习Python内置函数 Python-3.12.0文档解读 目录 我的写法 代码逻辑概述 时间复杂度分析 空间复杂度分析 总结 我要更强 代码优化点…

Nginx详解-安装配置等

目录 一、引言 1.1 代理问题 1.2 负载均衡问题 1.3 资源优化 1.4 Nginx处理 二、Nginx概述 三、Nginx的安装 3.1 安装Nginx 3.2 Nginx的配置文件 四、Nginx的反向代理【重点】 4.1 正向代理和反向代理介绍 4.2 基于Nginx实现反向代理 4.3 关于Nginx的location路径…

Jetson系列机载电脑创建热点模式配置方法

Jetson nano为例—— 创建热点模式配置方法 1.1、新建一个 WiFi 在屏幕右上角找到网络图标,点击后选择“Edit Connections”选项,进入选择网络连接页面,然后点击左下角加号,新建一个连接,类型选择 WiFi 后点击 “cre…

如何选择适合自己的巴比达内网穿透方案

选择适合自己的巴比达内网穿透方案,需要考虑几个关键因素,包括您的具体需求、安全性要求、技术水平以及预算。以下是一些选择巴比达内网穿透方案的建议步骤: 1. 确定需求和用途 首先,需要明确您希望通过内网穿透实现的具体目标和…

【linux学习---1】点亮一个LED---驱动一个GPIO

文章目录 1、原理图找对应引脚2、IO复用3、IO配置4、GPIO配置5、GPIO时钟使能6、总结 1、原理图找对应引脚 从上图 可以看出, 蜂鸣器 接到了 BEEP 上, BEEP 就是 GPIO5_IO05 2、IO复用 查找IMX6UL参考手册 和 STM32一样,如果某个 IO 要作为…

DP:解决路径问题

文章目录 二维DP模型如何解决路径问题有关路径问题的几个问题1.不同路径2.不同路径Ⅱ3.下降路径最小和4.珠宝的最高价值5.地下城游戏 总结 二维DP模型 二维动态规划(DP)模型是一种通过引入两个维度的状态和转移方程来解决复杂问题的技术。它在许多优化和…

使用VMware创建Ubuntu 24.04【一】

系列文章目录 第二章 使用Ubuntu安装Frappe-Bench【二】 文章目录 系列文章目录前言相关链接下载地址虚拟机创建与运行初始化系统中配置 前言 VMware是一个虚拟化软件,它允许用户在一台计算机上模拟多个虚拟计算机环境。通过使用VMware,用户可以轻松地…

【Python】已解决:AttributeError: ‘function’ object has no attribute ‘ELement’

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:AttributeError: ‘function’ object has no attribute ‘ELement’ 一、分析问题背景 在Python编程中,AttributeError通常表明你试图访问一个对象…

【Linux】生物信息学常用基本命令

wget网址用于直接从网上下载某个文件到服务器,当然也可以直接从网上先把东西下到本地然后用filezilla这个软件来传输到服务器上。 当遇到不会的命令时候,可以使用man “不会的命令”来查看这个命令的详细信息。比如我想要看看ls这个命令的详细用法&…

K8S 集群节点扩容

环境说明: 主机名IP地址CPU/内存角色K8S版本Docker版本k8s231192.168.99.2312C4Gmaster1.23.1720.10.24k8s232192.168.99.2322C4Gwoker1.23.1720.10.24k8s233(需上线)192.168.99.2332C4Gwoker1.23.1720.10.24 当现有集群中的节点资源不够用&…

FFmpeg教程-三-播放pcm文件-1

目录 一,下载SDL 二,在Qt中测试 1,在pro文件中加入路径 2,在.cpp文件中加入头文件 3,进行测试 4,显示结果 一,下载SDL 通过编程的方式播放音视频,也是需要用到这2个库: FFmpeg…

2本Top,4本纯正刊,25天即录!7月刊源表已更新!

本周投稿推荐 SCI • 能源技术类,1.5-2.0(来稿即录25天) • 计算机类,2.0-3.0(纯正刊29天录用) EI • 各领域沾边均可(2天录用) CNKI • 7天录用-检索(急录友好&a…

Python处理异常用操作介绍

Python中的异常处理主要用于捕获和处理程序运行过程中出现的错误。 在编写Python程序时,我们经常会遇到各种错误,如语法错误、运行时错误等。为了确保程序的稳定性和健壮性,我们需要对可能出现的错误进行捕获和处理。本文将介绍Python中常用的…

【云原生监控】Prometheus 普罗米修斯从搭建到使用详解

目录 一、前言 二、服务监控概述 2.1 什么是微服务监控 2.2 微服务监控指标 2.3 微服务监控工具 三、Prometheus概述 3.1 Prometheus是什么 3.2 Prometheus 特点 3.3 Prometheus 架构图 3.3.1 Prometheus核心组件 3.3.2 Prometheus 工作流程 3.4 Prometheus 应用场景…

贪心算法——加工木棍(C++)

上大学,一天是一天,两天也是一天。 ——2024年6月27日 之前考试周断更了,今天重新开始! 题目描述 有n根木棍,已知每根木棍的长度和重量。这些木棍在木工机器上加工,机器准备加工木棍需要一些时间&#xf…

GraalVM

文章目录 1、什么是GraalVM2、GraalVM的两种模式1_JIT模式2_AOT模式3_总结 3、应用场景1_SpringBoot搭建GraalVM应用2_函数计算3_Serverless应用 4、参数优化和故障诊断1_内存快照文件的获取2_运行时数据的获取 1、什么是GraalVM GraalVM是Oracle官方推出的一款高性能JDK&…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(十九)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 29 节) P29《28.网络连接-第三方库axios》 要想使用第三方库axios,需要先安装ohpm,因为 axios…

认识String类

文章目录 String类字符串的遍历字符串的比较字符串的替换字符串的转换字符串的切割字符串的切片字符串的查找 总结 String类 在C语言中已经涉及到字符串了,但是在C语言中要表示字符串只能使用字符数组或者字符指针,可以使用标准库提 供的字符串系列函数完…

003-GeoGebra如何无缝嵌入到PPT里

GeoGebra无缝嵌入到PPT里真是一个头疼的问题,已成功解决,这里记录一下,希望可以帮助到更多人。 注意,后续所有的文章说的PPT都是Offce Power Point, 不要拿着WPS的bug来问我哦,我已经戒WPS了(此处表示无奈&…