自监督分类网络:创新的端到端学习方法

news2024/11/23 17:08:27

现代人工智能的快速发展中,分类任务的高效解决方案一直备受关注。今天,我们向大家介绍一种名为Self-Classifier的全新自监督端到端分类学习方法。由Elad Amrani、Leonid Karlinsky和Alex Bronstein团队开发,Self-Classifier通过优化同一样本的两个增强视图的同类预测,能够在单阶段的端到端过程中同时学习标签和表示。

为了避免出现所有标签都被错误地分配到同一类的退化解决方案,研究团队提出了一种在预测标签上具有均匀先验的交叉熵损失的数学变体。经过理论验证,该方法能够有效地排除退化解,确保最优解的合理性和多样性。

Self-Classifier的设计简单且具有高度的可扩展性。与其他流行的无监督分类和对比表示学习方法不同,Self-Classifier无需预训练、期望最大化、伪标签、外部聚类、第二网络、停止梯度操作或负样本对等复杂步骤。尽管其实现过程简洁明了,该方法在ImageNet的无监督分类中设立了新的标杆,并且在无监督表示学习中也取得了与当前最先进方法相当的成果。有关更多细节和代码实现,您可以访问此处。

github:https://github.com/elad-amrani/self-classifier
.

接下来,我们将深入探讨Self-Classifier的工作原理及其在实际应用中的优势。

论文标题:Self-Supervised Classification Network
论文地址:https://arxiv.org/pdf/2103.10994v3

自监督分类网络:创新的端到端学习方法

  • 引言
  • 自监督学习在图像分类中的发展和方法
  • 无监督图像聚类方法
  • 自监督分类计算过程
  • 结果分析
    • 无监督图像分类
    • 实施细节
    • 图像增强
    • 优化

引言

近年来,自监督视觉表示学习逐渐成为研究热点。其核心思想是定义并解决一个前置任务,使得模型在没有任何人工标注标签的情况下能够学习到有意义的语义表示。这些学到的表示随后可以在较小的数据集上进行微调,并应用于各种下游任务。当前最先进的自监督模型大多基于对比学习,这些模型通过最大化同一图像的两个不同增强视图之间的相似性,同时最小化不同图像之间的相似性来实现目标。然而,尽管这些模型整体性能优异,对于某些下游任务(如无监督分类),它们所定义的前置任务目标可能并不完全契合。例如,用于预训练的实例区分方法在当前最先进的无监督分类方法中,虽然减少了所有实例之间的相似性,但这可能与分类任务的目标相悖。

为了解决这一问题,本文提出了一种基于分类的前置任务,其目标直接与最终的分类任务对齐。在这种方法中,我们只需要知道类别的数量C,便可学习到一个无监督分类器(Self-Classifier),使得同一图像的两个不同增强视图被分类为相同的类。然而,这样的任务容易产生退化解决方案,即所有样本都被分配到同一个类。为避免这种情况,我们在标准交叉熵损失函数上引入了均匀先验,使数据的均分成为最优解决方案。事实上,我们证明了这种方法的最优解集合不包括退化的解。

我们的方法也可以看作是一种结合了对比学习的深度无监督聚类方法。与传统的深度聚类方法类似,我们同时学习神经网络的参数和聚类分配。最近的一些研究成功地将聚类与对比学习结合,但通常将聚类作为一个独立的步骤用于伪标签。相反,本文的方法在单阶段端到端的方式下,仅使用小批量随机梯度下降(SGD)同时学习表示和聚类标签。

本文的主要贡献包括:

  1. 提出了一种简单而有效的自监督单阶段端到端分类和表示学习方法。与之前的方法不同,我们的方法不需要任何形式的预训练、期望最大化算法、伪标签或外部聚类,不需要记忆库、第二网络、外部聚类、停止梯度操作或负样本对。
  2. 尽管方法简单,但在ImageNet的无监督分类中设立了新的标杆,达到了41.1%的top-1准确率,取得了与最先进的无监督表示学习相当的结果,并在转移到COCO检测/分割任务时,比其他自监督方法显著提高(约2%的平均精度)。
  3. 首次提供了自监督分类预测与一组不同类层次对齐的定量分析,并在这一新指标上比之前的最先进方法显著提高(最多3.4%的调整互信息)。

在这里插入图片描述

上图为自分类器架构:同一图像的两个增强视图由主干网(例如CNN)和分类器(例如投影MLP+线性分类头)。交叉熵
最小化两个视图中的一个以促进同类预测,

自监督学习在图像分类中的发展和方法

自监督学习方法通过定义和解决前置任务来学习紧凑的语义数据表示。在这些任务中,自然存在的监督信号被用于训练。近年来,计算机视觉领域提出了许多前置任务,包括颜色化、拼图、图像修补、上下文预测、旋转预测和对比学习等。这些前置任务为自监督学习提供了丰富的研究方向,使得无监督的数据表示学习得到了广泛的发展和应用。

对比学习表现出极大的潜力,已成为自监督学习的标准方法。早期的两项对比学习研究是Exemplar CNN和非参数实例区分(NPID)。Exemplar CNN通过卷积神经网络分类器学习区分实例,每个类代表一个实例及其增强视图。尽管这种方法简单有效,但它不能扩展到任意大的无标签数据量,因为它需要一个与数据集大小相同的分类层(softmax)。NPID通过用噪声对比估计(NCE)来近似完整的softmax分布,并利用内存库存储每个实例的最新表示,避免在每个学习过程的时间步计算整个数据集的表示,从而解决了这个问题。这种近似方法是有效的,因为与Exemplar CNN不同,它允许在大量无标签数据上进行训练。然而,NPID提出的内存库引入了一个新问题——存储在内存库中的表示缺乏一致性,即内存库中不同样本的表示是在多个不同时间步计算的。尽管如此,Exemplar CNN和NPID激发了一系列关于对比学习的研究。

最近的一项研究SwAV与本研究最为相似。SwAV利用了对比方法,而无需计算成对比较。更具体地说,它在对数据进行聚类的同时,强制不同增强视图(或“视角”)的聚类分配保持一致,而不是直接比较特征。为避免所有样本收敛到单个聚类的简单解决方案,SwAV在使用反向传播进行表示学习和使用Sinkhorn-Knopp算法进行单独的聚类步骤之间交替进行。与SwAV不同,本研究提出了一种在单阶段端到端的方式中同时学习表示和聚类分配的模型。这种方法不仅简化了训练过程,还提高了分类和表示学习的效率。

无监督图像聚类方法

尽管多年来提出了许多深度聚类方法,但只有两种方法(SCAN和 SeLa)证明了在像ImageNet这样的大规模数据集上的可扩展性。这些方法在解决无监督图像分类任务方面取得了显著进展,但依然面临一些挑战。例如,传统的基于聚类的方法往往依赖于外部算法(如k-means)或者需要多个阶段的迭代,从而可能受限于局部最优解或者计算复杂度的增加。此外,这些方法通常需要手动调整超参数或者需要依赖额外的数据结构,如内存库或者聚类数目的先验知识。

近年来的研究趋势表明,单阶段端到端的深度聚类方法正在成为一个新的方向。这些方法旨在通过简化流程和减少人为干预来提高算法的鲁棒性和可扩展性。例如,本文提出的方法借鉴了对比学习和聚类的结合思想,通过在学习过程中引入均匀标签先验,有效地避免了退化的解决方案,并在ImageNet数据集上取得了显著的无监督分类性能提升。

总体而言,深度无监督聚类在自监督学习的框架下,不仅促进了图像特征表示的学习,还为大规模无标签数据的有效利用提供了新的可能性。然而,如何在保持算法简洁性的同时,进一步提升其性能和泛化能力,仍然是当前研究的关键挑战之一。未来的工作将集中于优化算法的效率,探索更具鲁棒性的损失函数设计,以及推动这些方法在更广泛的视觉任务和数据集上的应用。

自监督分类计算过程

在自监督学习中,通过定义一种预文本任务来学习图像数据的语义表示,而无需人工标注的标签。本文提出了一种名为 Self-Classifier 的方法,旨在通过学习同一图像样本的不同增强视图之间的相似性,来实现图像分类任务。让我们一起来看看这个方法是如何实现的。

目标

我们的目标是学习一个分类器 y = f ( x i ) ∈ [ C ] y=f(x_i) \in [C] y=f(xi)[C],其中
C C C是类别数,使得同一样本的不同增强视图被分类为相似的类别,同时避免退化的解决方案。

初始的交叉熵损失(Naive Cross-Entropy Loss)

最初的想法是通过最小化交叉熵损失来实现这一目标:

ℓ ~ ( x 1 , x 2 ) = − ∑ y ∈ [ C ] p ( y ∣ x 2 ) log ⁡ p ( y ∣ x 1 ) (1) \tilde{\ell}(x_1, x_2) = -\sum_{y \in [C]} p(y|x_2) \log p(y|x_1) \tag{1} ~(x1,x2)=y[C]p(yx2)logp(yx1)(1)

在这里, p ( y ∣ x ) p(y∣x) p(yx) 是由我们的模型(包括骨干网络和分类器)为所有类别(列)和批量样本(行)生成的 logits 矩阵的行 softmax,使用温度参数 τ r o w τ_{row} τrow。然而,简单地尝试最小化这种损失(式(1))往往会导致网络预测为常数类别 y y y,而不考虑输入 x x x

引入贝叶斯和总概率法则(Bayes and Total Probability Law)

为了解决上述问题,我们引入了贝叶斯和总概率法则:

p ( y ∣ x 2 ) = p ( y ) p ( x 2 ∣ y ) p ( x 2 ) = p ( y ) p ( x 2 ∣ y ) ∑ y ~ ∈ [ C ] p ( x 2 ∣ y ~ ) p ( y ~ ) (2) p(y|x_2) = \frac{p(y)p(x_2|y)}{p(x_2)} = \frac{p(y)p(x_2|y)}{\sum_{\tilde{y} \in [C]} p(x_2|\tilde{y}) p(\tilde{y})} \tag{2} p(yx2)=p(x2)p(y)p(x2y)=y~[C]p(x2y~)p(y~)p(y)p(x2y)(2)

p ( y ∣ x 1 ) = p ( y ) p ( y ∣ x 1 ) p ( y ) = p ( y ) p ( y ∣ x 1 ) ∑ x ~ 1 ∈ B 1 p ( y ∣ x ~ 1 ) p ( x ~ 1 ) (3) p(y|x_1) = \frac{p(y)p(y|x_1)}{p(y)} = \frac{p(y)p(y|x_1)}{\sum_{\tilde{x}_1 \in B_1} p(y|\tilde{x}_1) p(\tilde{x}_1)} \tag{3} p(yx1)=p(y)p(y)p(yx1)=x~1B1p(yx~1)p(x~1)p(y)p(yx1)(3)

这里, p ( x ∣ y ) p(x∣y) p(xy)是我们的 logits 矩阵的列 softmax,使用温度参数 τ c o l τ_{col} τcol。假设 p ( x 1 ) p(x_1) p(x1) 是均匀分布(在训练样本等概率的合理假设下),并且我们希望所有类别都被使用,因此对 p ( y ) p(y) p(y)假设一个直观的均匀先验。

提出的损失函数(Proposed Loss Function)

基于上述假设,我们提出了下面的损失函数:

ℓ ( x 1 , x 2 ) = − ∑ y ∈ [ C ] p ( x 2 ∣ y ) ∑ y ~ p ( x 2 ∣ y ~ ) log ⁡ ( N C p ( y ∣ x 1 ) ∑ x ~ 1 p ( y ∣ x ~ 1 ) ) (4) \ell(x_1, x_2) = -\sum_{y \in [C]} \frac{p(x_2|y)}{\sum_{\tilde{y}} p(x_2|\tilde{y})} \log \left( \frac{N}{C} \frac{p(y|x_1)}{\sum_{\tilde{x}_1} p(y|\tilde{x}_1)} \right) \tag{4} (x1,x2)=y[C]y~p(x2y~)p(x2y)log(CNx~1p(yx~1)p(yx1))(4)

这个损失函数的设计目的是使得两个不同视角的样本在类别预测上尽可能一致,从而促使模型学习到有意义的表示。

对称损失函数(Symmetric Loss Function)

为了进一步提升训练的效果,我们使用对称损失函数:

L = 1 2 ( ℓ ( x 1 , x 2 ) + ℓ ( x 2 , x 1 ) ) (5) \mathcal{L} = \frac{1}{2} \left( \ell(x_1, x_2) + \ell(x_2, x_1) \right) \tag{5} L=21((x1,x2)+(x2,x1))(5)

这个损失函数考虑了两个视角之间的对称性,确保了模型在处理不同视角时具有一致的表现。

综上所述,虽然 Self-Classifier 方法非常简单(只需几行类似于 PyTorch 的伪代码),但它在自监督分类任务中取得了新的技术突破,推动了这一领域的进展

算法步骤

步骤描述伪代码
输入参数 N N N: 批次中的样本数 C C C: 类别数
t r t_r tr, t c t_c tc: 行/列softmax温度 a u g ( ) aug() aug(): 随机数据增强 s o f t m a x X ( ) softmaxX() softmaxX(): 在维度 X X X上的 s o f t m a x softmax softmax, n o r m X ( ) normX() normX(): 维度 X X X上的 L 1 L1 L1标准化
遍历数据加载器for x in loader:
前向传播s1, s2 = model(aug(x)), model(aug(x))
计算对数概率log_y_x1 = log(N / C * norm0(softmax1(s1 / t_r)))
log_y_x2 = log(N / C * norm0(softmax1(s2 / t_r)))
计算logits的softmaxy_x1 = norm1(softmax0(s1 / t_c))
y_x2 = norm1(softmax0(s2 / t_c))
计算各自的损失l1 = -sum(y_x2 * log_y_x1) / N
l2 = -sum(y_x1 * log_y_x2) / N
计算对称损失L = (l1 + l2) / 2
反向传播L.backward()
优化器更新optimizer.step()

示例的PyTorch代码

以下是将伪代码转换为类似PyTorch风格的实现:

import torch
import torch.nn.functional as F

# 定义参数
N = 32  # 批次大小
C = 10  # 类别数
t_r = 0.1  # 行softmax温度
t_c = 0.1  # 列softmax温度

# 模型定义(请根据实际情况定义自己的模型)
class YourModel(torch.nn.Module):
    def __init__(self):
        super(YourModel, self).__init__()
        # 在这里定义你的模型架构
        self.fc = torch.nn.Linear(input_size, output_size)

    def forward(self, x):
        # 示例前向传播
        x = self.fc(x)
        return x

model = YourModel()
optimizer = torch.optim.Adam(model.parameters(), lr=0.001)

# 数据加载器设置(请根据实际情况设置自己的数据加载器)
data_loader = torch.utils.data.DataLoader(dataset, batch_size=N, shuffle=True)

# 训练循环
for batch_idx, (x, _) in enumerate(data_loader):
    # 数据增强
    x_aug1 = aug(x)
    x_aug2 = aug(x)
    
    # 前向传播
    s1 = model(x_aug1)
    s2 = model(x_aug2)
    
    # 计算log概率
    log_y_x1 = torch.log(N / C * F.normalize(F.softmax(s1 / t_r, dim=-1), p=1, dim=-1))
    log_y_x2 = torch.log(N / C * F.normalize(F.softmax(s2 / t_r, dim=-1), p=1, dim=-1))
    
    # 计算logits的softmax
    y_x1 = F.normalize(F.softmax(s1 / t_c, dim=-1), p=1, dim=-1)
    y_x2 = F.normalize(F.softmax(s2 / t_c, dim=-1), p=1, dim=-1)
    
    # 计算各自的损失
    l1 = -torch.sum(y_x2 * log_y_x1) / N
    l2 = -torch.sum(y_x1 * log_y_x2) / N
    
    # 计算对称损失
    L = (l1 + l2) / 2
    
    # 反向传播
    optimizer.zero_grad()
    L.backward()
    optimizer.step()

结果分析

无监督图像分类

文章作者使用大规模ImageNet数据集评估了这些的方法,用于无监督图像分类(见表1至表3)。报告了标准的聚类评估指标:标准化互信息(NMI)、调整后的标准化互信息(AMI)、调整兰德指数(ARI)和聚类准确度(ACC)。

文章的方法在所有四个指标(NMI、AMI、ARI和ACC)上都达到了新的最先进性能,即使训练的epoch数量明显较少(见表1)。文章作者将这些的方法与最新的大规模深度聚类方法进行了比较,这些方法都在ImageNet上进行了显式评估。此外,还将这些的方法与最新的自监督表示学习方法(使用ImageNet预训练模型)进行了比较,这些模型经过拟合k均值分类器对训练集上的学习表示进行了推断。所有方法的推断都是在验证集上进行的(在训练期间未曾见过)。

当前最先进的方法SCAN是一个多阶段算法,包括:
1)预训练(800个epoch);
2)离线k最近邻挖掘;
3)聚类(100个epoch);
4)自标记和微调(25个epoch)。

相比之下,Self-Classifier是一个单阶段、易于实现的模型(参见算法1),只使用小批量SGD进行训练。仅仅在200个epoch后,Self-Classifier就超过了经过925个epoch训练的SCAN。

SCAN提供了有趣的定性分析,分析了其无监督类别预测与默认的(WordNet)ImageNet语义层次结构的某个级别的对齐情况。相比之下,提出了更多样化的定量指标,以评估自监督分类方法在默认的ImageNet层次结构不同级别上的性能,以及在经过精心策划的ImageNet子人口(BREEDS)的多个层次上的性能。

实施细节

在所有实验中,使用了ResNet-50作为骨干网络,并采用了通常用于所有比较的自监督学习工作的初始化方法。投影头部分采用了一个包含两层(大小分别为4096和128)的MLP,具有BN、泄漏ReLU激活函数,并在最后一层后进行了ℓ2归一化。在投影头部分的MLP之上,有4个分类头,分别面向1K、2K、4K和8K个类别。每个分类头都是一个简单的线性层,没有额外的偏置项。行softmax温度 τ r o w τ_{row} τrow设定为0.1,列softmax温度 τ c o l τ_{col} τcol设定为0.05。

图像增强

文章作者遵循了BYOL的数据增强方法,包括颜色抖动、高斯模糊和日晒化,以及多裁剪(两个全局224×224视图和六个局部96×96视图)和最近邻增强(最近邻增强的队列设置为256K)。

优化

无监督预训练/分类:文章作者的大多数训练超参数直接来的SwAV。使用了LARS优化器,学习率为4.8,权重衰减为 1 0 − 6 10^-6 106。学习率在前10个epoch内线性增加(从0.3开始),然后使用余弦调度器在接下来的790个epoch内线性减少,最终值为0.0048(共800个epoch)。使用了分布在64个NVIDIA V100 GPU上的批量大小为4096。

线性评估:类似于,使用了LARS优化器,学习率为0.8,没有使用权重衰减。学习率使用余弦调度器在100个epoch内线性减少,使用了分布在16个NVIDIA V100 GPU上的批量大小为4096。还尝试了中使用SGD优化器,批量大小为256,结果相似。

表1:ImageNet无监督图像分类结果(NMI、AMI、ARI和ACC)

在这里插入图片描述

表2:ImageNet-superclasses无监督图像分类准确率
在这里插入图片描述

表3:ImageNet-subsets(BREEDS)无监督图像分类结果
在这里插入图片描述

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

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

相关文章

【机器学习】QLoRA:基于PEFT亲手微调你的第一个AI大模型

目录 一、引言 二、量化与微调—原理剖析 2.1 为什么要量化微调? 2.2 量化(Quantization) 2.2.1 量化原理 2.2.2 量化代码 2.3 微调(Fine-Tuning) 2.3.1 LoRA 2.3.2 QLoRA 三、量化与微调—实战演练:以Qwen…

Photoshop 2024 mac/win版:探索图像处理的全新境界

Photoshop 2024是Adobe推出的最新图像处理与设计软件,它在继承了前作所有优秀特性的基础上,实现了多个方面的质的飞跃。这款软件凭借其卓越的图像处理性能、丰富的创意工具以及精确的选区编辑功能,成为了图像处理领域的佼佼者。 Photoshop 2…

Golang免杀-分离式加载器(传参)AES加密

目录 enc.go 生成: dec.go --执行dec.go...--上线 cs生成个c语言的shellcode. enc.go go run .\enc.go shellcode 生成: --key为公钥. --code为AES加密后的数据, ----此脚本每次运行key和code都会变化. package mainimport ("bytes""crypto/aes"&…

redis 08 慢查询日志

1.什么是慢查询日志 2.慢查询和两个参数有关 2.1 2.2 3.例子: 4 参数详细介绍:

共模信号与差模信号

差模信号又称串模信号,指的是两根线之间的信号差值;而共模信号又称对地信号,指的是两根线分别对地的信号。 差模信号:大小相等,方向相反的信号。共模信号:大小相等,方向相同的信号。 对于两输…

集合查询-并(UNION)集运算、交(INTERSECT)集运算、差(EXCEPT)集运算

一、概述 集合查询是对两个SELECT语句的查询结果进行再进行处理的查询 二、条件 1、两个SELECT语句的查询结果必须是属性列数目相同 2、两个SELECT语句的查询结果必须是对应位置上的属性列必须是相同的数据类型 三、并(UNION)运算 1、语法格式: SELECT 语句1…

4090显卡 安装cuda 11.3 版本

文章目录 cuda 安装安装过程中会要求选择安装的内容更改cuda地址到你安装的地方 cuda 安装 cuda官网寻找cuda11.3 版本 https://developer.nvidia.com/cuda-11.3.0-download-archive?target_osLinux&target_archx86_64&DistributionUbuntu&target_version20.04&…

和利时DCS数据采集对接安监平台

在工业互联网日益繁荣的今天,工业数据的采集、传输与利用变得至关重要。特别是在工业自动化领域,数据的实时性和准确性直接关系到生产效率和安全性。和利时DCS(分布式控制系统)以其卓越的稳定性和可靠性,在工业自动化领…

被封号后,我终于明白免费代理的危害

在数字时代,网络已经成为人们日常生活和商业活动中不可或缺的一部分。为了实现更广阔的业务拓展和更畅通的网络体验,许多人开始考虑使用代理服务器。然而,虽然免费代理可能听起来像是个经济实惠的选择,但事实上,它可能…

SSH协议

SSH协议简介 SSH(Secure Shell)是一种网络安全协议,用于在不安全的网络环境中提供加密的远程登录和其他网络服务。它通过加密和认证机制实现安全的访问和文件传输等业务,是Telnet、FTP等不安全远程shell协议的安全替代方案。 SSH协…

数据挖掘丨轻松应用RapidMiner机器学习内置数据分析案例模板详解(下篇)

RapidMiner 案例模板 RapidMiner 机器学习平台提供了一个可视化的操作界面,允许用户通过拖放的方式构建数据分析流程。RapidMiner目前内置了 13 种案例模板,这些模板是预定义的数据分析流程,可以帮助用户快速启动和执行常见的数据分析任务。 …

大模型微调出错的解决方案(持续更新)

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

关于python下安装selenium以及使用

📑打牌 : da pai ge的个人主页 🌤️个人专栏 : da pai ge的博客专栏 ☁️宝剑锋从磨砺出,梅花香自苦寒来 目录 1、win10安装python环境 2、…

【第6章】Vue生命周期

文章目录 前言一、生命周期1. 两大类2. 生命周期 二、选项式生命周期1. 代码2. 效果 三、组合式生命周期1. 代码2. 效果2.1 挂载和更新2.2 卸载和挂载 总结 前言 每个 Vue 组件实例在创建时都需要经历一系列的初始化步骤,比如设置好数据侦听,编译模板&a…

【MySQL】MySQL45讲-读书笔记

1、基础架构:一条SQL查询语句是如何执行的? 1.1 连接器 连接器负责跟客户端建立连接、获取权限、维持和管理连接。 mysql -h$ip -P$port -u$user -p输完命令之后,输入密码。 1.2 查询缓存 MySQL 拿到一个查询请求后,会先到查询缓…

AlmaLinux 8.10 x86_64 OVF (sysin) - VMware 虚拟机模板

AlmaLinux 8.10 x86_64 OVF (sysin) - VMware 虚拟机模板 AlmaLinux release 8.10 请访问原文链接:https://sysin.org/blog/almalinux-8-ovf/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 2023.03.08 更新&…

自动控制原理【期末复习】(二)

无人机上桨之后可以在调试架上先调试: 1.根轨迹的绘制 /// 前面针对的是时域分析,下面针对频域分析: 2.波特图 3.奈维斯特图绘制 1.奈氏稳定判据 2.对数稳定判据 3.相位裕度和幅值裕度

数组(C语言)(详细过程!!!)

目录 数组的概念 一维数组 sizeof计算数组元素个数 二维数组 C99中的变⻓数组 数组的概念 数组是⼀组相同类型元素的集合。 数组分为⼀维数组和多维数组,多维数组⼀般比较多见的是二维数组。 从这个概念中我们就可以发现2个有价值的信息:(1)数…

直播带货连创新高!TikTok美区下半年将迎来集中爆发!

美区直播带短短两周时间,TikTok货迎来大爆发! 5月31日,美国顶流美妆网红“Jeffree Star”,带货直播单场GMV创记录,销售额达到66.5万美元(约482.4万人民币)。紧接着,6月8日&#xff0…

一套轻量、安全的问卷系统基座,提供面向个人和企业的一站式产品级解决方案

大家好,今天给大家分享的是一款轻量、安全的问卷系统基座。 XIAOJUSURVEY是一套轻量、安全的问卷系统基座,提供面向个人和企业的一站式产品级解决方案,快速满足各类线上调研场景。 内部系统已沉淀 40种题型,累积精选模板 100&a…