Slot attention理解

news2024/10/8 22:42:49

1、Slot Attention Module是如何迭代细化绑定到输入特征的特定部分

Slot Attention Module通过一种迭代的注意力机制来细化绑定到输入特征的特定部分。以下是其具体的工作过程:

  1. Slot 初始化

    • 初始的 slots 是从一个共享的高斯分布中随机采样得到的。这些 slots 在初始时刻并不知道要绑定到哪个对象,它们会在后续的迭代中不断更新和细化。
  2. 输入处理

    • 输入特征经过线性变换后会生成键(keys)、查询(queries)和值(values),这些是注意力机制的基础要素。
  3. 注意力计算

    • 使用点积注意力机制来计算每个 slot 与输入特征之间的相似性。通过将查询(来自 slots)和键(来自输入特征)进行点积操作,得到一个相似性分数矩阵。
    • 相似性分数经过 Softmax 归一化操作,使其在 slots 之间进行竞争。这种归一化方式确保每个 slot 争夺对输入特征的解释权,从而不同的 slots 会倾向于绑定到不同的输入部分。
  4. 更新 slots

    • 使用加权平均的方法将输入特征聚合到 slots 中。注意力机制将每个输入特征赋予不同的权重,并将这些加权的输入特征平均合并到 slots 中。
    • 使用一个递归更新函数(通常是 Gated Recurrent Unit, GRU)来更新每个 slot 的表示,使其能够根据新获取的信息逐步优化。
  5. 多次迭代

    • 以上步骤会重复进行多次迭代(例如 3 次),每次迭代都通过竞争性的注意力机制使得 slots 更好地聚焦于特定的输入区域。随着迭代次数的增加,slots 对输入特征的绑定会逐渐变得更加精确和稳定。
  6. 最终输出

    • 经过多轮迭代后,slots 最终会稳定下来,每个 slot 都会专注于输入特征中与特定对象或部分相关的信息。最终这些 slots 可以用于下游任务,如对象发现或属性预测。

这种迭代细化的过程使得 Slot Attention Module 能够在没有明确监督的情况下,自主学习并聚焦到输入数据中的不同对象或特征部分。这种机制也使得 slots 在处理新组合和新对象时具有更好的泛化能力。

2、能不能举个简单的例子 带着简单计算的例子 来说明上述过程

当然,我可以通过一个简单的例子来解释 Slot Attention Module 的迭代细化过程,并使用一些简单的计算来帮助理解。

假设我们有一个简单的输入特征集,包含三个特征向量,表示图像中的三个不同的区域。我们希望通过 Slot Attention Module 来将这些特征绑定到两个不同的 slots 上。

设定

  • 输入特征:三个特征向量,每个特征向量的维度为 2。
    • 输入特征矩阵:(\text{inputs} = \begin{bmatrix} 1 & 2 \ 3 & 1 \ 0 & 4 \end{bmatrix})
  • 初始化 slots:我们有两个 slots,每个 slot 的维度也是 2,初始化为随机值。
    • 初始 slots:(\text{slots} = \begin{bmatrix} 0.5 & 1.5 \ 2.0 & 0.5 \end{bmatrix})
  • 注意力机制中的线性变换参数:为了简单起见,我们假设键(key)和查询(query)的线性变换是单位矩阵,即它们不会改变输入值。

迭代步骤

第一步:计算键(key)和查询(query)
  • 计算输入的键: keys = inputs × I = [ 1 2 3 1 0 4 ] \text{keys} = \text{inputs} \times I = \begin{bmatrix} 1 & 2 \\ 3 & 1 \\ 0 & 4 \end{bmatrix} keys=inputs×I= 130214
  • 计算 slots 的查询: queries = slots × I = [ 0.5 1.5 2.0 0.5 ] \text{queries} = \text{slots} \times I = \begin{bmatrix} 0.5 & 1.5 \\ 2.0 & 0.5 \end{bmatrix} queries=slots×I=[0.52.01.50.5]
第二步:计算注意力权重
  • 使用点积计算每个 slot 对每个输入特征的相似性分数:

    • Slot 1 对输入特征的相似性分数:
      • 与特征 1 的相似性: 0.5 × 1 + 1.5 × 2 = 3.5 0.5 \times 1 + 1.5 \times 2 = 3.5 0.5×1+1.5×2=3.5
      • 与特征 2 的相似性: 0.5 × 3 + 1.5 × 1 = 3 0.5 \times 3 + 1.5 \times 1 = 3 0.5×3+1.5×1=3
      • 与特征 3 的相似性: 0.5 × 0 + 1.5 × 4 = 6 0.5 \times 0 + 1.5 \times 4 = 6 0.5×0+1.5×4=6
    • Slot 2 对输入特征的相似性分数:
      • 与特征 1 的相似性: 2.0 × 1 + 0.5 × 2 = 3 2.0 \times 1 + 0.5 \times 2 = 3 2.0×1+0.5×2=3
      • 与特征 2 的相似性: 2.0 × 3 + 0.5 × 1 = 6.5 2.0 \times 3 + 0.5 \times 1 = 6.5 2.0×3+0.5×1=6.5
      • 与特征 3 的相似性: 2.0 × 0 + 0.5 × 4 = 2 2.0 \times 0 + 0.5 \times 4 = 2 2.0×0+0.5×4=2
  • 得到相似性矩阵:
    Similarity Matrix = [ 3.5 3 6 3 6.5 2 ] \text{Similarity Matrix} = \begin{bmatrix} 3.5 & 3 & 6 \\ 3 & 6.5 & 2 \end{bmatrix} Similarity Matrix=[3.5336.562]

  • 对相似性分数进行 Softmax 归一化(在 slots 维度上进行归一化),得到注意力权重:

    • 对特征 1:Softmax(3.5, 3) = (0.62, 0.38)
    • 对特征 2:Softmax(3, 6.5) = (0.04, 0.96)
    • 对特征 3:Softmax(6, 2) = (0.98, 0.02)
  • 注意力权重矩阵:
    Attention Weights = [ 0.62 0.04 0.98 0.38 0.96 0.02 ] \text{Attention Weights} = \begin{bmatrix} 0.62 & 0.04 & 0.98 \\ 0.38 & 0.96 & 0.02 \end{bmatrix} Attention Weights=[0.620.380.040.960.980.02]

第三步:计算 slots 的更新
  • 使用注意力权重来对输入特征进行加权平均,并更新 slots:

    • Slot 1 的更新: 0.62 × [ 1 , 2 ] + 0.04 × [ 3 , 1 ] + 0.98 × [ 0 , 4 ] = [ 0.66 , 4.48 ] 0.62 \times [1, 2] + 0.04 \times [3, 1] + 0.98 \times [0, 4] = [0.66, 4.48] 0.62×[1,2]+0.04×[3,1]+0.98×[0,4]=[0.66,4.48]
    • Slot 2 的更新: 0.38 × [ 1 , 2 ] + 0.96 × [ 3 , 1 ] + 0.02 × [ 0 , 4 ] = [ 2.42 , 1.38 ] 0.38 \times [1, 2] + 0.96 \times [3, 1] + 0.02 \times [0, 4] = [2.42, 1.38] 0.38×[1,2]+0.96×[3,1]+0.02×[0,4]=[2.42,1.38]
  • 更新后的 slots:
    Updated slots = [ 0.66 4.48 2.42 1.38 ] \text{Updated slots} = \begin{bmatrix} 0.66 & 4.48 \\ 2.42 & 1.38 \end{bmatrix} Updated slots=[0.662.424.481.38]

第四步:多轮迭代
  • 重复上述过程数次(例如 3 次),每次迭代时,slots 会逐渐集中于不同的输入特征,最终在多个对象之间形成明确的绑定关系。

解释

通过这些迭代更新,每个 slot 会逐渐专注于输入中的不同特征(或对象)。Slot 1 可能会绑定到与特征 3 相关的区域,而 Slot 2 可能会绑定到特征 2,随着迭代的进行,这种绑定关系会更加清晰。

这个例子展示了如何通过迭代注意力机制来逐步细化 slots 对输入特征的绑定,最终达到对象分离和表示的目的。

能不能举个例子,比如图中有圆形,正方形,三角形,如何应用上述的过程

让我们通过一个具体的图像场景例子来演示 Slot Attention Module 的应用。假设我们有一张图像,图中包含三个形状:一个圆形、一个正方形和一个三角形。我们的目标是使用 Slot Attention Module 来识别并分离这三个形状。

场景设定

  • 输入图像:图像中包含三个形状(圆形、正方形、三角形)。

  • 输入特征:假设我们使用一个卷积神经网络(CNN)提取了图像特征,这些特征表示了图像中的不同区域。为了简单起见,我们将这些区域特征简化为三个特征向量:

    • 圆形的特征:([0.8, 0.2])
    • 正方形的特征:([0.1, 0.9])
    • 三角形的特征:([0.5, 0.5])
  • 初始化 slots:我们使用两个 slots 来开始这个过程,假设初始化为:

    • Slot 1:([0.2, 0.3])
    • Slot 2:([0.7, 0.6])

迭代步骤

第一步:计算键(key)和查询(query)
  • 输入特征:(\text{inputs} = \begin{bmatrix} 0.8 & 0.2 \ 0.1 & 0.9 \ 0.5 & 0.5 \end{bmatrix})
  • slots 的初始值:(\text{slots} = \begin{bmatrix} 0.2 & 0.3 \ 0.7 & 0.6 \end{bmatrix})

对于简单说明,我们假设键(key)和查询(query)的线性变换是单位矩阵(不改变数值),所以键等于输入特征,查询等于 slots。

第二步:计算注意力权重
  • 使用点积计算每个 slot 与每个输入特征之间的相似性:

    • Slot 1:

      • 与圆形特征的相似性:(0.2 \times 0.8 + 0.3 \times 0.2 = 0.22)
      • 与正方形特征的相似性:(0.2 \times 0.1 + 0.3 \times 0.9 = 0.29)
      • 与三角形特征的相似性:(0.2 \times 0.5 + 0.3 \times 0.5 = 0.25)
    • Slot 2:

      • 与圆形特征的相似性:(0.7 \times 0.8 + 0.6 \times 0.2 = 0.68)
      • 与正方形特征的相似性:(0.7 \times 0.1 + 0.6 \times 0.9 = 0.61)
      • 与三角形特征的相似性:(0.7 \times 0.5 + 0.6 \times 0.5 = 0.65)
  • 得到的相似性矩阵为:
    [
    \text{Similarity Matrix} = \begin{bmatrix} 0.22 & 0.29 & 0.25 \ 0.68 & 0.61 & 0.65 \end{bmatrix}
    ]

  • 对相似性分数在 slots 维度上进行 Softmax 归一化:

    • 对于圆形特征:Softmax(0.22, 0.68) = (0.31, 0.69)
    • 对于正方形特征:Softmax(0.29, 0.61) = (0.42, 0.58)
    • 对于三角形特征:Softmax(0.25, 0.65) = (0.36, 0.64)
  • 注意力权重矩阵:
    [
    \text{Attention Weights} = \begin{bmatrix} 0.31 & 0.42 & 0.36 \ 0.69 & 0.58 & 0.64 \end{bmatrix}
    ]

第三步:更新 slots

使用注意力权重对输入特征进行加权平均,以更新 slots:

  • Slot 1 的更新:
    [
    \text{Slot 1 更新} = 0.31 \times [0.8, 0.2] + 0.42 \times [0.1, 0.9] + 0.36 \times [0.5, 0.5] = [0.43, 0.51]
    ]

  • Slot 2 的更新:
    [
    \text{Slot 2 更新} = 0.69 \times [0.8, 0.2] + 0.58 \times [0.1, 0.9] + 0.64 \times [0.5, 0.5] = [0.54, 0.44]
    ]

  • 更新后的 slots:
    [
    \text{Updated slots} = \begin{bmatrix} 0.43 & 0.51 \ 0.54 & 0.44 \end{bmatrix}
    ]

第四步:多轮迭代

在每一轮迭代中,slots 会逐渐专注于不同的输入特征。经过几次迭代后:

  • Slot 1 可能会逐渐专注于圆形,而 Slot 2 则专注于正方形或三角形。
  • 通过多次迭代,Slot Attention Module 能够细化 slots 对输入特征的绑定,使每个 slot 只关注一个特定的形状。

结果

最终,Slot Attention Module 能够自动将不同的形状绑定到不同的 slots 上。例如,Slot 1 专注于圆形,而 Slot 2 专注于正方形或三角形。这个过程无需明确的标签指导,完全依靠 slots 之间的竞争和迭代来实现对象的分离。

这个例子展示了如何通过 Slot Attention Module 的迭代过程,使模型能够自动识别和分离图像中的多个形状。

在每一轮迭代中,slots 会逐渐专注于不同的输入特征。这是为什么呢,这是有监督学习还是无监督吗

在每一轮迭代中,Slot Attention 模块的 slots 会逐渐专注于不同的输入特征,这是因为 Slot Attention 使用了一种基于竞争的注意力机制,使每个 slot 尝试解释输入特征的不同部分。这种机制是无监督学习的一种形式,下面我来详细解释为什么 slots 会逐渐专注于不同的输入特征,以及它是如何实现的。

为什么 slots 会专注于不同的输入特征?

Slot Attention 的工作原理是通过迭代过程让 slots 和输入特征之间相互作用,并逐渐细化 slots 对输入特征的绑定。以下是一些关键原因:

  1. 竞争性注意力机制

    • 在每一轮迭代中,slots 和输入特征之间通过注意力机制进行交互。注意力机制使用了 Softmax 归一化,将输入特征分配给 slots。
    • 这种归一化是在 slots 维度上完成的,这意味着不同的 slots 会竞争去解释同一个输入特征。由于注意力得分的竞争,slots 会努力去分开绑定不同的输入特征。
    • 随着迭代的进行,slots 会逐渐找到它们最能解释的特征,从而使每个 slot 更加专注于与自己相关的输入部分。
  2. 迭代更新

    • 每一轮迭代之后,slots 会根据上一次的注意力分配和输入特征的聚合结果进行更新。通过使用递归更新机制(例如 GRU),每个 slot 能够记住它在之前迭代中关注到的特征,并进一步优化其表示。
    • 随着多次迭代,slots 会更稳定地绑定到输入特征的特定部分,这使得它们能够在不同的迭代中逐渐专注于不同的对象或区域。
  3. 共享特征空间

    • 所有的 slots 都在同一个特征空间中竞争绑定输入特征,但没有被预先指定为绑定某个特定类型的对象。这种设计使得 slots 的绑定过程是自适应的,它们会根据输入特征进行调整。
    • 这种灵活性让 Slot Attention 模块在面对不同数量或类型的对象时也能很好地工作。

Slot Attention 是无监督学习还是有监督学习?

Slot Attention 是一种无监督学习的方法,尤其在对象发现(object discovery)任务中。它不需要提前知道图像中有哪些对象,也不依赖于明确的标签或分割标注。相反,它通过优化目标(例如图像重建误差)来学习如何自动将输入特征分组到不同的 slots 上。

无监督学习的特点是:

  • 模型不依赖任何人工标注的数据。
  • 学习过程中是通过优化某种内部损失函数(如重构损失)来逼近期望的结果。

在 Slot Attention 中,这种内部损失可能是通过一个解码器来重建输入图像。如果 slots 能够准确地捕捉到图像中的各个对象,那么重建的图像就会更接近原始图像,从而降低重构误差。这种信号会指导 Slot Attention 模块学习如何更好地分离和表示不同的对象。

结论

Slot Attention 模块中的 slots 会逐渐专注于不同的输入特征,是因为它们在竞争性注意力机制的引导下,通过无监督学习的方式自适应地调整自身,以最优地绑定输入特征。这种机制无需任何明确的监督信号,依赖的是输入数据本身以及模型的优化过程。

为什么不会出现一个slot与很多特征,比如圆和三角都绑定的情况

Slot Attention 模块的设计机制使得它在大多数情况下不会让一个 slot 同时绑定多个特征(例如,圆形和三角形)。这主要归功于其竞争性注意力机制,该机制通过以下几个关键因素来促使每个 slot 专注于不同的输入特征:

1. Softmax 归一化在 slots 维度上的作用

  • 在 Slot Attention 中,注意力机制的 Softmax 操作是在 slots 维度上进行归一化的。这意味着,对于每一个输入特征,所有的 slots 必须竞争去解释这个特征。
  • Softmax 操作会将每个 slot 的注意力分数转化为一个概率分布,这个分布的总和为 1。这种竞争性机制导致了一个输入特征倾向于被分配给最适合的 slot,而其他 slots 得到的权重会相对较小。

2. 迭代更新过程

  • Slot Attention 采用了一个迭代的过程,在每一轮迭代中,slots 会根据上一轮的结果进行更新和细化。随着迭代次数的增加,slots 会逐渐对特定的输入特征更加敏感,并专注于与自己最相关的特征区域。
  • 如果在早期迭代中一个 slot 同时绑定了多个特征,后续的迭代会通过更新机制(如 GRU)逐渐将这些特征分离开来,使每个 slot 最终专注于一个特定的对象或区域。

3. 随机初始化和更新策略

  • Slots 在初始化时是随机的,并且通过学习得到的。初始的 slots 不会特别偏向于任何特定的对象,而是通过不断更新来逐渐适应输入特征。由于 slots 是随机初始化的,它们的初始状态差异导致它们在学习过程中会绑定到不同的输入特征。
  • 这种随机性在加上竞争机制后,使得每个 slot 能够朝着不同的方向优化,而不会过多地重叠到同一个输入特征上。

4. Slot Attention 的软聚类行为

  • Slot Attention 的行为类似于一种软聚类(soft clustering),每个 slot 类似于一个聚类中心,通过注意力机制将最相关的输入特征吸引到自己周围。
  • 聚类的过程本身是有竞争性的,这意味着,如果一个 slot 对某些特征有较强的注意力,那么其他 slots 就会被迫去关注其他特征,而不会把相同的输入特征分配到多个 slots 上。

5. 权重更新中的信息瓶颈

  • 在 Slot Attention 中,slots 的更新是通过聚合输入特征的加权平均值完成的。这个加权平均值的计算依赖于 slots 的竞争性注意力得分,这种机制使得 slots 必须选择性地聚焦在最能解释的特征上。
  • 如果一个 slot 同时尝试绑定多个特征,这会导致它在更新过程中受到多种信息的干扰,难以形成稳定的表示。因此,模型会自发地趋向于让 slots 专注于不同的对象或特征,以减少这种干扰。

总结

Slot Attention 的设计目的就是通过竞争性注意力机制迭代更新策略,使每个 slot 更加专注于不同的输入特征。这种机制使得 slots 不会同时绑定多个不同特征,而是会在多轮迭代中逐渐找到自己最擅长解释的对象,最终实现对输入数据的有效分离。

因此,Slot Attention 模块的工作方式本质上就是通过强制 slots 之间竞争,使它们各自找到不同的特征进行绑定,从而避免了一个 slot 同时绑定多个特征的情况。

如果在早期迭代中一个 slot 同时绑定了多个特征,后续的迭代会通过更新机制(如 GRU)逐渐将这些特征分离开来,能举个具体例子吗

我们通过一个具体的例子来演示 Slot Attention 模块如何在早期迭代中,如果一个 slot 同时绑定了多个特征,后续的迭代会通过更新机制逐渐将这些特征分离开来。

场景设定

假设我们有一个图像,其中包含三个形状:圆形、正方形和三角形。我们希望使用两个 slots 来分离这些形状的特征。

  • 输入特征

    • 圆形的特征:([0.8, 0.2])
    • 正方形的特征:([0.1, 0.9])
    • 三角形的特征:([0.5, 0.5])
  • 初始 slots

    • Slot 1:([0.3, 0.3])
    • Slot 2:([0.6, 0.6])

在第一轮迭代中,假设 Slot 1 同时对圆形和三角形这两个特征都有较高的注意力,而 Slot 2 则主要关注正方形。

第 1 轮迭代

Step 1: 计算注意力权重

假设使用简单的点积来计算注意力分数,得到的相似性矩阵如下:

  • Slot 1 与输入特征的相似性分数:

    • 与圆形:(0.3 \times 0.8 + 0.3 \times 0.2 = 0.3)
    • 与正方形:(0.3 \times 0.1 + 0.3 \times 0.9 = 0.3)
    • 与三角形:(0.3 \times 0.5 + 0.3 \times 0.5 = 0.3)
  • Slot 2 与输入特征的相似性分数:

    • 与圆形:(0.6 \times 0.8 + 0.6 \times 0.2 = 0.6)
    • 与正方形:(0.6 \times 0.1 + 0.6 \times 0.9 = 0.6)
    • 与三角形:(0.6 \times 0.5 + 0.6 \times 0.5 = 0.6)

注意力权重经过 Softmax 归一化后可能变为:

  • Slot 1 对应的权重(圆形、正方形、三角形):([0.4, 0.3, 0.3])
  • Slot 2 对应的权重(圆形、正方形、三角形):([0.2, 0.4, 0.4])

在第一轮迭代结束后,我们发现 Slot 1 同时绑定了圆形和三角形。

第 2 轮迭代

在第 2 轮迭代中,Slot Attention 模块通过 GRU 更新机制,slots 的表示会基于前一次迭代的注意力权重和输入特征进行更新。由于 Slot 1 和 Slot 2 都尝试绑定到多个特征,它们会逐步调整以更好地专注于不同的对象。

假设更新后:

  • Slot 1 更新为:([0.4, 0.5])
  • Slot 2 更新为:([0.6, 0.4])

再次计算相似性分数:

  • Slot 1 与输入特征的相似性分数:

    • 与圆形:(0.4 \times 0.8 + 0.5 \times 0.2 = 0.42)
    • 与正方形:(0.4 \times 0.1 + 0.5 \times 0.9 = 0.5)
    • 与三角形:(0.4 \times 0.5 + 0.5 \times 0.5 = 0.45)
  • Slot 2 与输入特征的相似性分数:

    • 与圆形:(0.6 \times 0.8 + 0.4 \times 0.2 = 0.56)
    • 与正方形:(0.6 \times 0.1 + 0.4 \times 0.9 = 0.42)
    • 与三角形:(0.6 \times 0.5 + 0.4 \times 0.5 = 0.5)

经过 Softmax 归一化后:

  • Slot 1 对应的权重(圆形、正方形、三角形):([0.3, 0.4, 0.3])
  • Slot 2 对应的权重(圆形、正方形、三角形):([0.5, 0.3, 0.2])

现在我们看到,随着迭代的进行,Slot 1 的注意力逐渐集中在正方形,而 Slot 2 的注意力逐渐集中在圆形和三角形。

第 3 轮迭代

在第三轮迭代中,通过继续调整 slots 的表示,使得每个 slot 更加专注于其最能解释的特征:

  • 假设 Slot 1 最终更新为:([0.1, 0.8]),更加接近正方形的特征
  • Slot 2 最终更新为:([0.7, 0.3]),更加接近圆形和三角形的特征

再一次计算注意力分数和更新注意力权重后,我们会发现:

  • Slot 1 更明确地绑定到了正方形特征,因为它与正方形的相似性最高。
  • Slot 2 会更明确地绑定到圆形和三角形中的一个对象。

结论

通过多轮迭代,Slot Attention 模块利用 GRU 更新机制不断调整 slots 的表示,使得每个 slot 自然地朝着一个特定对象进行优化,即使在初期迭代中一个 slot 同时绑定了多个特征,最终它会通过注意力竞争和迭代更新过程逐渐将这些特征分离开来。

这种机制确保了每个 slot 最终会专注于解释一个不同的输入特征,使模型能够有效地分离和表示图像中的不同对象。

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

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

相关文章

无人机在矿业领域的应用!

矿区测绘与建模 无人机可以快速、全面地获取矿区的地形地貌数据,生成高精度的二维或三维模型。 这些模型可用于矿区的规划、设计、监测和管理,提高矿山的生产效率。 库存量量化监测 无人机能够捕捉厘米级的地形数据,通过计算得出准确的库…

ADC -模数转换

ADC -模数转换 - 将模拟信号转换为数字信号 目录 ADC -模数转换 - 将模拟信号转换为数字信号 STM32方面使用的AD转化方式是逐次逼近法 ADC 什么叫单次,连续,扫描,中断? 应用:运用STM32中ADC转…

Vue入门-小黑课堂Demo

功能需求&#xff1a; ①列表渲染 ②删除功能 ③添加功能 ④底部统计和清空 页面效果&#xff1a; 代码展示&#xff1a; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" c…

年会工作会议会务报名签到小程序开源版开发

年会工作会议会务报名签到小程序开源版开发 会议管理微信小程序&#xff0c;对会议流程、开支、数量、标准、供应商提供一种标准化的管理方法。以达到量化成本节约&#xff0c;风险缓解和服务质量提升的目的。适用于大型论坛、峰会、学术会议、政府大会、合作伙伴大会、经销商…

大多数人不知道的:线程池CallerRunsPolicy()拒绝策略

总所周知&#xff0c;java里面线程池的四个拒绝策略 AbortPolicy 丢弃并抛出RejectedExecutionException异常 DiscardPolicy 直接丢弃 DiscardOldestPolicy 直接丢弃最前面的任务&#xff0c;尝试执行新任务 CallerRunsPolicy 由调用线程池的线程处理任务&a…

linux安装minianconda

文章目录 &#x1f315;我的配置&#x1f315;从清华镜像源里下载minianaconda&#x1f315;安装&#x1f315;自定义安装位置&#x1f315;是否关闭打开终端默认进入anaconda的设置&#xff1f;&#x1f315;配置清华镜像源 &#x1f315;我的配置 ubuntu 22.04LTS &#x1…

全都燃起来了!黄金周车市销量成绩出炉

文/王俣祺 导语&#xff1a;国庆黄金周对于其他行业可能是个放松的好时机&#xff0c;但对于国内汽车市场而言可能是下半年最关键的“战场”。这几天&#xff0c;全国各地的车展和4S店简直热闹非凡&#xff0c;新能源车尤其抢镜&#xff0c;优惠活动不断&#xff0c;引得消费者…

DAMA数据管理知识体系(第9章 文件和内容管理)

课本内容 9.1 引言 概要 文件和内容管理是指针对存储在关系型数据库之外的数据和信息的采集、存储、访问和使用过程的管理[1]。它的重点在于保持文件和其他非结构化或半结构化信息的完整性&#xff0c;并使这些信息能够被访问。业务驱动因素 法规遵从性要求 法律法规要求组织保…

基于uniapp+django微信小程序 食品安全信息管理系统

目录 项目介绍具体实现截图开发者工具介绍技术路线性能/安全/负载方面开发语言以及框架介绍python-flask核心代码部分展示python-django核心代码部分展示详细视频演示源码获取 项目介绍 食品安全信息管理系统设计的目的是为用户提供食品信息、科普专栏、食品检测、检测结果、交…

力扣LeetCode-链表中的循环与递归使用

标题做题的时候发现循环与递归的使用差别&#xff1a; 看两道题&#xff1a; 两道题都是不知道链表有多长&#xff0c;所以需要用到循环&#xff0c;用到循环就可以把整个过程分成多个循环体&#xff0c;就是每一次循环要执行的内容。 反转链表&#xff1a; 把null–>1…

【图论】迪杰特斯拉算法

文章目录 迪杰特斯拉算法主要特点基本思想算法步骤示例 实现迪杰斯特拉算法基本步骤算法思路 总结 迪杰特斯拉算法 迪杰特斯拉算法是由荷兰计算机科学家艾兹赫尔迪杰特斯拉&#xff08;Edsger W. Dijkstra&#xff09;在1956年提出的&#xff0c;用于解决单源最短路径问题的经…

动态规划算法题目练习——91.解码方法

1.题目解析 题目来源&#xff1a;91.解码方法——力扣 测试用例 2.算法原理 基础版本 1.状态表示 由于题目只要求返回第i个位置的可能情况&#xff0c;则只需要开辟n(ns.size())个大小的dp表即可 2.状态转移方程 题目可知第i个位置可以单独解码也可以与前一个位置组合解码&am…

通付盾|打造新型信息基础设施

2024年9月4日&#xff0c;工业和信息化部、中央网信办等十一部门联合印发《关于推动新型信息基础设施协调发展有关事项的通知》&#xff0c;从全国统筹布局、跨区域协调、跨网络协调、跨行业协调、发展与绿色协调、发展与安全协调、跨部门政策协调等方面明确了21条具体举措&…

命名管道Linux

管道是 毫不相关的进程进程间通信::命名管道 管道 首先自己要用用户层缓冲区&#xff0c;还得把用户层缓冲区拷贝到管道里&#xff0c;&#xff08;从键盘里输入数据到用户层缓冲区里面&#xff09;&#xff0c;然后用户层缓冲区通过系统调用&#xff08;write&#xff09;写…

【JavaEE】——文件IO

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;认识文件 1&#xff1a;文件的概念 2&#xff1a;文件的结构 3&#xff1a;文件路径…

电脑好用便签怎么用,好用的便签软件让你轻松提高工作效率

在忙碌的工作中&#xff0c;作为一名牛马打工人&#xff0c;我们经常需要记住许多重要的事项和任务。有时候&#xff0c;简单的脑力记忆可能会让我们遗漏一些事情&#xff0c;而一个好用的便签软件就可以帮助我们解决这个问题&#xff0c;提高我们的工作效率。那么&#xff0c;…

四.python核心语法

目录 1.序列 1.1. 索引 1.2. 切片 1.3. 总结 2.加法和乘法 2.1. 加法 2.2. 乘法 3.常用函数 3.1.sum()函数 3.2.max()函数和min()函数 3.3.len()函数 4. list 列表 [ ] 基本操作 4.1. 列表的定义 4.2. 列表的创建&#xff08;list()函数&#xff09; 4.3. 列表的…

实施BADI增强支持多个活动的增强实施

找到一个BADI之后&#xff0c;在SE18里面输入BADI名称 一定要查看当前BADI是否支持多种用法&#xff0c;即同一个BADI定义可以实施多个BADI增强。 1、勾选多种用法&#xff0c;才能新实施BADI增强&#xff0c;支持多个实施可同时是活动的。 2、未勾选多种用法&#xff0c;只…

C++——STL简介

目录 一、什么是STL 二、STL的版本 三、STL的六大组件 没用的话..... 不知不觉两个月没写博客了&#xff0c;暑假后期因为学校的事情在忙&#xff0c;开学又在准备学校的java免修&#xff0c;再然后才继续开始学C&#xff0c;然后最近打算继续写博客沉淀一下最近学到的几周…

Echarts实现订单数据统计,前端+后端 代码

以下是静态统计图可以直接看到统计图&#xff0c;复制粘贴即可看到效果&#xff0c;但是数据是死的。下面我会介绍一种动态的方法 &#xff0c;后端动态返回&#xff0c;基于订单页面的数据&#xff0c;来渲染统计图。 Vue 安装 Echarts npm i echarts -S 静态 &#xff1a; …