Zero-Shot Learning—A Comprehensive Evaluation of the Good, the Bad and the Ugly

目录

  • 背景知识
    • why zero-shot learning?
    • 广义零样本学习设置
  • 1 INTRODUCTION
    • 1.1 zero-shot learning——methods
    • 1.2 zero-shot learning——datasets
    • 1.3 zero-shot learning——evaluation protocol
  • 2 RELATED WORK
    • 2.1 早期工作
      • 2.1.1 Attribute-based classification for zero-shot visual object categorization(TPAMI 2013)
      • 2.1.2 Recovering the missing link: Predicting class-attribute associations for unsupervised zero-shot learning(CVPR2016)
      • 2.1.3 Zero-shot learning by convex combination of semantic embeddings(ICLR 2014)
    • 2.2 一些进展(截至2017)
      • 2.2.1 学习直接从图像特征空间到语义空间的映射
        • 2.2.1.1 Zero-Shot Learning with Semantic Output Code( NIPS 2009)
        • 2.2.1.2 An Embarrassingly Simple Approach to Semi-Supervised Few-Shot Learning( NIPS 2022)
        • 2.2.1.3 Semantic Autoencoder for Zero-Shot Learning(CVPR 2017)
      • 2.2.2 Learn non-linear multi-modal embeddings

背景知识

why zero-shot learning?

  • 传统的监督学习: 将数据映射到特征空间上,根据标签注释训练得到一个分类器
    问题: 遇到一个新类样本时,分类器会将这个样本划分到已有的类中,这是不对的——实际分类器不知道该怎么做
    在这里插入图片描述
  • zero-shot learning: 将类嵌入成语义向量,学习将某类的样本特征空间映射到该类的语义空间上,最终可以实现根据新类样本来生成所属的新类的语义向量即能够判别一个新类——属于迁移学习的一个变体

在这里插入图片描述

广义零样本学习设置

  • Zero-Shot Learning: 训练类集和测试类集之间没有交集,在训练类上训练得到的模型能够在测试阶段成功识别从未见过的测试类样例
  • Generalized Zero-Shot learning: 训练阶段,只可以使用训练集(已知类样本)训练模型;而在测试阶段,测试集中可以包含训练集中已知类以及未知类——“零样本学习在测试阶段,只有未见类样例出现”, 这在实际应用中是不现实的

1 INTRODUCTION

  • good aspects: 对零样本学习的研究工作逐年迅速增加
  • bad aspects: 没有既定的评估方案来量化这些方法的效果如何,即使每种方法都展示了在前人的方法上取得了进展
  • ugly aspects: 对最终效果上的数字的追求甚至导致了有缺陷的评估方案

想法: 在几个从小规模到大规模的数据集上,使用相同的评估方案,即训练集和测试集不相关且更多地广义零样本学习设置,去广泛深入地评估大量最近的零镜头学习方法


零样本学习的关键思想:
辅助信息 auxiliary information : 对已知类和未知类的描述/语义属性/词嵌入等信息
训练过程:能够建立样本特征空间 feature space 和 语义空间 Semantic space 之间的映射,再根据输出的语义信息确定类别

举个例子: 假设小暗(纯粹因为不想用小明)和爸爸,到了动物园,看到了马,然后爸爸告诉他,这就是马;之后,又看到了老虎,告诉他:“看,这种身上有条纹的动物就是老虎。”;最后,又带他去看了熊猫,对他说:“你看这熊猫是黑白色的。”然后,爸爸给小暗安排了一个任务,让他在动物园里找一种他从没见过的动物,叫斑马,并告诉了小暗有关于斑马的信息:“斑马有着马的轮廓,身上有像老虎一样的条纹,而且它像熊猫一样是黑白色的。”最后,小暗根据爸爸的提示,在动物园里找到了斑马

在这里插入图片描述

思考

  • 要实现ZSL功能似乎需要解决两个部分的问题:
    • 第一个问题:获取合适的类别描述 A
    • 第二个问题:建立一个合适的分类模型
  • 第一个问题是大头:可以人工专家,也可以通过海量的附加数据集自动学习出来——进展缓慢

以上 from 小栗子


论文通过 m e t h o d s , d a t a s e t s , e v a l u a t i o n p r o t o c o l methods,datasets,evaluation protocol methods,datasets,evaluationprotocol三方面评估现有的零样本学习

1.1 zero-shot learning——methods

  • linear compatibility learning frameworks
  • nonlinear compatibility learning frameworks

注: 过往的主流,目标都是学习 independent attribute classifiers

  • hybrid model between independent classifier learning and compatibility learning frameworks

1.2 zero-shot learning——datasets

  • Animals with Attributes (AWA1) dataset:只是图像特征,而不是原始图像
    • 问题:都是动物的图片,包括50个类别的图片,其中40个类别作为训练集,10个类别作为测试集,每个类别的语义为85维,总共有30475张图片。但是目前由于版权问题,已经无法获取这个数据集的图片了,而现有的分类模型大多根据原始图像(在ImageNet上训练),使得这些模型无法作用在该数据集上
    • 解决:作者设计了Animals with Attributes 2 (AWA2) dataset——有公共许可证,且与AWA1数据集的类和属性数量完全相同
  • AWA2
  • Sun database(SUN):总共有717个类别,每个类别20张图片,类别语义为102维。传统的分法是训练集707类,测试集10类
  • Caltech-UCSD-Birds-200-2011(CUB):全部都是鸟类的图片,总共200类,150类为训练集,50类为测试集,类别的语义为312维,有11788张图片
  • Attribute Pascal and Yahoo dataset(aPY) :共有32个类,其中20个类作为训练集,12个类作为测试集,类别语义为64维,共有15339张图片。
  • ImageNet

1.3 zero-shot learning——evaluation protocol

提出了一个 unified evaluation protocol :

  • 调参设置:强调从训练集中分割出验证集 validation dataset来进行 进行调参(tune hyperparameters)的必要性——通过调整测试类上的参数来提高零样本学习性能违反了zero-shot assumption
  • 数据集不平衡问题: 当数据集在每个类的图像数量方面没有很好地平衡时,每个类的平均top-1精度是一个重要的评估指标
  • 特征提取问题: 通过预先训练的深度神经网络(DNN)在包含零样本测试类的大型数据集上提取图像特征也违反了zero-shot assumption——图像特征提取是训练过程的一部分
  • 数据集选择问题:
    • 在小规模和粗粒度数据集(即aPY[18])上测试模型性能得到的结果不是决定性的
    • 强调很难获得细粒度稀有物体识别类的标记训练数据,这需要专家意见——也应该在不流行或很少的类上进行评估
  • 实际问题: 广义零镜头学习设置

2 RELATED WORK

2.1 早期工作

  • TPAMI-13-Attribute-based classification for zero-shot visual object categorization
  • ICLR-14-Zero-shot learning by convex combination of semantic embeddings
  • CVPR-16-Recovering the missing link: Predicting class-attribute associations for unsupervised zero-shot learning
  • NIPS-14-Zero-shot recognition with unreliable attributes
  • CVPR-12-Online incremental attribute-based zero-shot learning

two-stage approach

  • 首先,对输入图像的属性集进行预测
  • 然后,将属性集最相似的类作为图像的标签(类也有一个属性集)

two-stage approach 存在 domain shift 问题【不同的数据集具有不同的数据分布,一般情况下训练的模型也只能用在与这种训练数据集分布相似的数据集上,而用于与训练数据集分布不同的数据集中时,则会产生具有明显差距的结果】

2.1.1 Attribute-based classification for zero-shot visual object categorization(TPAMI 2013)

关键思想

  • 根据有意义的属性 a t t r i b u t e attribute attribute列表(高级语义列表)对样本进行分类,所谓属性就如颜色、形状等,是为普遍共有抽象的东西(而特征 f e a t u r e feature feature是具体的,如颜色是红色)
  • 虽然物体的类别不同,但是物体间存在相同的属性——跨越各类的边界,提炼出每一类别具有的全部属性并利用若干个学习器学习。在测试时对测试数据的属性预测,再将预测出的属性组合,对应到类别,实现对测试数据的类别预测

问题定义
在这里插入图片描述

标准的分类器在上述问题定义上是无法在测试集上分类成功的,因为训练集和测试集不相交,同时分类器实际上会对训练集上的每个类训练得到一个参数向量(由某类样本直接到所属类标签的映射),结果是只能对训练集中的类进行分类,而对测试集模型不知道该怎么做


一些概率论背景知识:

  • 先验概率 prior probability : 事件发生前的预判概率,可以是基于历史数据的统计,可以是由背景常识得到,也可以是人的主观观点给出,一般都是单独事件概率,如 p ( x ) p(x) p(x),但应该也称为全事件下发生概率即 p ( x ∣ Ω ) p(x|Ω) p(x∣Ω)
  • 后验概率 posterior probability:考虑新信息之后事件发生的修正或更新概率,即假设事件B已经发生的情况下事件A发生的概率,表达为 p ( A ∣ B ) = p ( A ∩ B ) p ( B ) p(A|B)={p(A \cap B) \over p(B)} p(AB)=p(B)p(AB)

Direct attribute prediction(DAP)
在这里插入图片描述

  • 【训练阶段】学习每个属性 a m a_m am的概率分类器
    • 训练样本:所有训练类中的所有图像
    • 训练标签:一种是per-image attribute annotations, if available;另一种是从类标签对应的属性列表中推断
  • 【测试阶段】
    • Assumption:每个未知类z以确定的方式推导其属性向量 a z a^z az,表达为 p ( a ∣ z ) = [ [ a = a z ] ] p(a|z)=[[a=a^z]] p(az)=[[a=az]]——Iverson’s bracket notation:[[P]] = 1if the condition P is true and it is 0 otherwise.【我的理解就是辅助信息】
    • 首先:预测某个样本在各个属性 attribute 上的概率值(后验概率) p ( a m ∣ x ) p(a_m|x) p(amx)——image-attribute layer
    • 接着:根据各未知类提供的属性列表(辅助信息)来筛选属性,再将选择后的属性对应的概率连乘起来,代表样本对此未知类的预测概率大小
    • 最终选择概率大的作为该样本的类
      在这里插入图片描述
      在这里插入图片描述

Indirect Attribute Prediction(IAP)
在这里插入图片描述
在这里插入图片描述


缺点:

  • 要求属性列表长度是固定的
  • 要求提供对未知类的描述——手工

在这里插入图片描述


2.1.2 Recovering the missing link: Predicting class-attribute associations for unsupervised zero-shot learning(CVPR2016)

关键思想 能够根据未知类的类标签自动预测未其相关的属性列表

问题定义
在这里插入图片描述

具体方法

  1. Vector space embedding for words——skip-gram model

    需要一种合适的表示法,将names转换为向量,同时保留words的语义含义

    skip-gram模型是一种神经网络,它学习words的向量表示,这些向量表示还有助于预测周围的words——因此,出现在相似上下文中的words(相邻words)在嵌入空间中会表示成彼此接近的向量表示;在大型文本语料库上进行训练 —— 泛化性好

    在这里插入图片描述

  2. Learning class-attribute relations——tensor factorization
    训练过程表示:

    在这里插入图片描述

    其中, R ∈ R d × d × N R \in \mathbb{R}^{d \times d \times N} RRd×d×N是一个三维向量, d d d是词嵌入后的向量的维度, N N N是所有关系的数量大小, R j ∈ R d × d R_j \in \mathbb{R}^{d \times d} RjRd×d用来计算某类和某属性的关系的双线性算子 bilinear operator; σ ( ) \sigma() σ()是逻辑运算

    在这里插入图片描述

    R j R_j Rj是通过学习得到的:

    在这里插入图片描述

    在这里插入图片描述
    其中, α j \alpha^j αj是一个稀疏向量 sparse vector,用来加权排名第一的潜在因素Θ的贡献度,使用 λ \lambda λ来控制 α \alpha α的稀疏性即 ∣ ∣ α j ∣ ∣ < = λ ||\alpha_j|| <= \lambda ∣∣αj∣∣<=λ,从而控制潜在因素在关系中共享的程度——使用到了latent factor model【确定某个类喜欢哪些属性】

  • R. Jenatton, A. Bordes, N. L. Roux, and G. Obozinski. A Latent Factor Model for Highly Multi-relational Data. In NIPS, 2012
  • 浅浅理解LFM

标签制作:

  • 学习目的:能够建立起某个类和其应有的属性之间的关系【让类、属性去寻找对方】
  • 问题:
    • 模型的输出就是某类和某属性之间的关系程度(概率表示),怎么评判这个输出是好的,关系应当有一个参照即标签;
    • 有的数据集会提共某类的属性列表,但有的不会
  • 参照关系设定: 上面提到利用skip-graph学习得到的嵌入向量若相似则会离得很近,此时可以利用聚类对属性嵌入空间进行分组【一个类寻找到一个簇内的某个属性的概率与寻找该簇内其他属性的概率应该是差不多?】

特别地:

  • treat the set of categories as an open set and fix their embedding v ( c ) v(c) v(c) to the one learned 【特征空间分布对齐】——未知类的信息不可获得,domain adaptation
    在这里插入图片描述

  • visual attributes A A A are usually restricted to entities which we have seen before ——更好地学习属性嵌入表示,通过传播梯度


  1. Predicting binary associations
    在这里插入图片描述

在这里插入图片描述


2.1.3 Zero-shot learning by convex combination of semantic embeddings(ICLR 2014)

问题定义
在这里插入图片描述
每个标签 y y y关联到语义嵌入向量semantic embedding vector s ( y ) ∈ S s(y) \in S s(y)S

关键思想

  • 训练阶段:按传统机器学习的方法利用训练集训练出一个分类器 p 0 p_0 p0,该分类器输出是某样本预测为某标签值的概率大小即 p 0 ( y ∣ x ) p_0(y|x) p0(yx),对应的预测标签为 y 0 ^ \hat{y_0} y0^
  • 测试阶段:
    • 首先,利用学习到的分类器对测试样本进行预测,选出置信度最高的前 T(超参数)个预测值包括概率值和预测的标签值(预测的是训练集上的标签)
    • 接着,计算该测试样本的语义嵌入向量f(x),式子如下,其中,Z是归一化因子
      在这里插入图片描述
      在这里插入图片描述
    • 最后,根据 将 f(x) 与 测试集中各真实标签的语义嵌入向量进行余弦相似度计算,选取最相似的标签作为其预测标签
      在这里插入图片描述

例子理解:
在这里插入图片描述

2.2 一些进展(截至2017)

2.2.1 学习直接从图像特征空间到语义空间的映射

29 30 7 9 10 31 32 33

  • NIPS-2009-Zero-Shot Learning with Semantic Output Code
  • TPAMI-2016-Label-Embedding for Image Classification
  • NIPS-2013-DeViSE: A Deep Visual-Semantic Embedding Mode
  • CVPR-2015-Evaluation of Output Embeddings for Fine-Grained Image Classification
  • ICML-2015-An Embarrassingly Simple Approach to
    Semi-Supervised Few-Shot Learning
  • CVPR-2016-Less is more: zero-shot learning from online textual documents
    with noise suppression∗
  • ECCV-2016-Improving Semantic Embedding Consistency by
    Metric Learning for Zero-Shot Classification
  • CVPR-2017-Semantic Autoencoder for Zero-Shot Learning
2.2.1.1 Zero-Shot Learning with Semantic Output Code( NIPS 2009)

general question: 给定一个大型概念类集合(concept classses)的语义编码(semantic encoding),能否构建一个分类器来识别出未知类?


问题定义

  • Definition 1. Semantic Feature Space: 语义特征空间是一个p维的度量空间(metric space)其每个维度都是语义属性(semantic property)的编码值

举个栗子: 考虑一个5维的描述动物的high level properties的语义空间,每一维的语义属性为:有没有毛皮?有没有尾巴?可以在水下呼吸吗?是否肉食?动作缓慢吗?那么在这个语义空间中典型的狗的概念可以表示为{1,1,0,1,0}

  • Definition 2. Semantic Knowledge Base : 一个包含M个类的语义知识库 是一个形如 { f , y } 1 : M \{f,y\}_{1:M} {f,y}1:M集合,其中, f ∈ F p f \in F^p fFp 是语义空间 F p F^p Fp中的一个的一个point, y ∈ Y y \in Y yY 是一个类的标签;假定 类标签与类的语义空间中的点是一对一的关系

注: 语义知识库包括与已知类和未知类相关联的语义属性

  • Definition 3. Semantic Output Code Classifier: 一个语义输出码分类器 H H H将原始输入空间 X d X^d Xd中的点映射为集合 Y Y Y中的标签,形如 H : X d → Y H:X^d \rightarrow Y H:XdY
    在这里插入图片描述
    训练设置:
    在这里插入图片描述
  • 语义属性向量(语义空间中的一个点)是binary lavels(二值标签)
  • 学习从原始图像到其语义编码的映射 S S S是一组PAC(可学习分类器)的集合
  • 学习从预测出的语义编码到类标签的映射 L L L是使用汉明距离度量(Hamming distance metric)的1-最近邻分类器(1-nearest neighbor classifier)
2.2.1.2 An Embarrassingly Simple Approach to Semi-Supervised Few-Shot Learning( NIPS 2022)

前景知识:

  • positive labels :给定样本的正确类标签
  • negative pseudo-labels:伪标签是指通过某种方法来给未标记样本打上标签,负标签是指给定样本所不属于的类标签;那么结合在一起就是在给未标记样本通过某些方法打标签时的最低置信度的标签【互补标签Complementary Labels
  • negative learning paradigm :学习给定样本不属于哪个类
    • 出发点是处理有噪声的标签、样本收集问题
    • 举个例子:给定某个样本如动物图片,实际是一个斑马,但此时由于知识的欠缺假定是未知的,但可以确定它不是猴子,它不是狗等等
  • NIPS-2017-Learning from complementary labels
  • ICML-2019-Complementary-LabelLearningforArbitraryLossesandModel
  • Weakly Supervised Learning: 提供模型一些带噪声的、不够完整的、不确切的监督信息,希望其能从这些信息中有效的学习
    • 不准确监督:通过一些众包平台对样本进行打标记,由于标注者质量的参差不齐,虽然绝大部分的样本能被正确的标记,但样本中还是存在着些许噪声标记
    • 不完全监督:通常只有少量准确的有标记样本以及大量的未标记样本,如何利用大量未标记样本的信息来学习一个有效的模型;
    • 不确切监督: 对于每个样本都会有一个候选集,并且只知道真实标记在这个候选集里面,但是具体是哪一个标记就不知道了

问题定义
在这里插入图片描述
训练/测试设置

  • N-way-K-shot
  • inductive inference:查询集内与基类数据集、支持集不相交
  • transductive inference:三者会相交

关键思想

  • 通过迭代地排除未标记样本的负标签,最后剩下的一个可以作为其正标签,然后再执行传统的positive learning
  • 每一次的迭代在找到本次负标签后会更新分类器 f f f的参数,然后再把这个负标签从候选类中排除 exclude,进行下一次迭代

代码

在这里插入图片描述

2.2.1.3 Semantic Autoencoder for Zero-Shot Learning(CVPR 2017)

related work:

  • Semantic space:
    • attribute space
    • word vector space
    • textual descriptions: Wikipedia articles , sentence descriptions
  • Visual → Semantic projection:
    • learn a projection function from a visual feature space to a semantic space either using conventional regression or ranking models or via deep neural network regression or ranking
    • chooses the reverse projection direction,semantic → visual ;The motivation is to alleviate the hubness problem
    • learn an intermediate space 【公共空间】where both the feature space and the semantic space are projected to
  • Autoencoder
    • undercomplete autoencoders:基于底层特征
    • overcomplete autoencoders:基于高维特征

关键想法 :使用Semantic AutoEncoder 技术解决domain shift 问题

  • 为什么使用AutoEncoder:因为对更真实的视觉特征重建的需求在seen and unseen domain都是需求的,保证学习到的视觉→语义投影函数保留原始视觉特征中包含的所有信息,从而解决了domain shift 问题
  • Semantic AutoEncoder: 为了使latent space 更具有语义意义,强制latent space S S S 为语义表示空间 semantic representation space , 且 S S S的每一列是输入样本的属性向量
    在这里插入图片描述
    在这里插入图片描述
    注: 优化过程,因为解决含有硬约束 hard constraint(WX=S)的问题是困难的,所以考虑将约束变宽变成软约束 soft constraint
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

问题定义

在这里插入图片描述


测试过程:训练得到的Semantic AutoEncoder既可以在语义空间也可以在视觉上对样本进行分类

  • 在语义空间上的分类-encode: 将测试样本利用学习到的编码器从视觉空间嵌入到语义空间得到语义表示,然后与每个未知类的原型的语义表示做距离度量,选择最近的一个未知类作为其标签
    在这里插入图片描述
  • 在视觉空间上的分类-decode: 将未知类的语义表示嵌入到视觉特征空间,然后计算输出与实际测试样本的样本的距离度量,选择最近的一个未知类作为标签
    在这里插入图片描述

2.2.2 Learn non-linear multi-modal embeddings

  • CVPR-2017-Latent embeddings for zero-shot classification
  • NIPS-2013-cross-Zero-shot learning through cross-modal transfer
  • ICCV-2015-Predicting deep zero-shot convolutional neural networks using textual descriptions
  • CVPR-12017-Learning a deep embedding model for zero-shot learning
  • CVPR-2017-Predicting visual exemplars of unseen classes for zero-shot learning

[11][12]
[34][35][36]

Embedding both the image and semantic features into another common intermediate space

[13]

  • “Zero-shot recognition with unreliable attributes,” in Proc. 27th Int. Conf. Neural Inf. Process. Syst., 2014
  • “Online incremental attribute-based zero-shot learning,” in Proc. IEEE Conf. Comput. Vis. Pattern Recognit., 2012

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

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

相关文章

STC8H8K蓝牙智能巡线小车——3.按键开关状态获取

电路分析 引脚为P37开关未按下时&#xff0c;P37是高电平开关按下时&#xff0c;GND导通&#xff0c;P37是低电平 编程思路 Driver目录中添加KEY.h文件&#xff0c;应包含引脚定义、开关GPIO实例化函数、开关状态获取函数以及当按下和未按下时执行不同的函数&#xff08;函数…

多级缓存架构(三)OpenResty Lua缓存

文章目录 一、nginx服务二、OpenResty服务1. 服务块定义2. 配置修改3. Lua程序编写4. 总结 三、运行四、测试五、高可用集群1. openresty2. tomcat 通过本文章&#xff0c;可以完成多级缓存架构中的Lua缓存。 一、nginx服务 在docker/docker-compose.yml中添加nginx服务块。…

全光谱护眼灯有哪些?寒假护眼台灯推荐

全光谱指的是包含了整个可见光谱范围以及部分红外和紫外光的光线。通常的白炽灯或荧光灯只能发出有限范围内的光波&#xff0c;而全光谱台灯通过使用多种类型的LED灯或荧光灯管来产生更广泛的光谱。这样的光谱更接近自然光&#xff0c;能够提供更真实的颜色还原和更好的照明效果…

Spring Cloud微服务基础入门

文章目录 发现宝藏前言环境准备创建第一个微服务1. 创建Spring Boot项目2. 创建微服务模块3. 编写微服务代码4. 创建一个简单的REST控制器 运行微服务 总结好书推荐 发现宝藏 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不…

懒得玩游戏--帮我做数独

目录 简介自动解数独思路核心思路输入解析打印 完整代码 简介 最近玩上了一款类似于数独的微信小程序游戏&#xff0c;名字叫数独趣味闯关&#xff0c;过了数独的关卡之后会给拼图&#xff0c;玩了几关之后摸清套路了就有点累了&#xff0c;但是还想集齐拼图&#xff0c;所以就…

为什么使用 atan2(sin(z), cos(z)) 进行角度归一化?

文章目录 为什么使用 atan2(sin(z), cos(z)) 进行归一化&#xff1f;为什么归一化后的角度等于原始角度&#xff1f; atan2 方法返回 -π 到 π 之间的值&#xff0c;代表点 (x, y) 相对于正X轴的偏移角度。这个角度是逆时针测量的&#xff0c;以弧度为单位。关于 atan2 函数为…

【第十四课】并查集(acwing-836合并集合 / 做题思路 /c++代码)

目录 错误思路(但能骗分emm)--邻接矩阵(可以跳过) 思路 存在的问题 代码如下 并查集 思路 代码如下 一些解释 错误思路(但能骗分emm)--邻接矩阵(可以跳过) 思路 刚看到这道题我自己做的时候&#xff0c;因为之前学的trie树的时候意识到使用二维数组的含义&#xff0c;…

群发邮件的免费软件?做外贸用什么邮箱好?

群发邮件的免费软件有哪些&#xff1f;好用的邮件群发软件&#xff1f; 在数字时代&#xff0c;邮件已成为人们沟通的主要方式之一。有时候&#xff0c;我们需要给大量的联系人发送信息&#xff0c;这时候&#xff0c;群发邮件就显得格外重要。接下来蜂邮就来探讨一下那些值得…

初学者必知的微软.NET6开发环境相关技术介绍

我是荔园微风&#xff0c;作为一名在IT界整整25年的老兵&#xff0c;看到不少初学者在学习编程语言的过程中如此的痛苦&#xff0c;我决定做点什么&#xff0c;我小时候喜欢看小人书&#xff08;连环画&#xff09;&#xff0c;在那个没有电视、没有手机的年代&#xff0c;这是…

[我的rust付费栏目]rust跟我学(一)已上线

大家好&#xff0c;我是开源库get_local_info的作者带剑书生&#xff0c;get_local_info诞生半个月&#xff0c;现在已经获得500的下载量&#xff0c;并获社区日更前五名&#xff0c;后被西安城市开发者社区收录&#xff08;【我的Rust库】get_local_info 0.1.5发布_rust_科比布…

ChatGPT:人工智能划时代的标志(文末送书)

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;网络奇遇记、数据结构 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. 什么是ChatGPT?二. ChatGPT是如何工作的&#xff1f;三. ChatGPT的应用领域四. ChatGPT的优缺点…

自创C++题目——风扇

预估难度 简单 题目描述 有一个风扇&#xff0c;它有个旋转叶片&#xff0c;每个旋转叶片的编号是&#xff0c;请输出它旋转后&#xff0c;中心点与地面的直线距离哪个叶片最近&#xff0c;输出此旋转叶片的编号。默认以“”的形式。 当时&#xff1a; 当或时&#xff0c;…

运筹说 第46期 | 目标规划-数学模型

经过前几期的学习&#xff0c;想必大家已经对线性规划问题有了详细的了解&#xff0c;但线性规划作为一种决策工具&#xff0c;在解决实际问题时&#xff0c;存在着一定的局限性&#xff1a;(1)线性规划只能处理一个目标&#xff0c;而现实问题往往存在多个目标&#xff1b;(2)…

vtk9.3 配置 visual studio 2019 运行环境 和运行实例详解

&#xff08;1&#xff09;包含文件配置&#xff1a; 项目--属性--VC目录&#xff0c;在包含目录中把include文件夹的地址加进去&#xff0c;一直要到下一级 vtk-9.3目录下&#xff0c; 小知识&#xff1a; 在Visual Studio 2019中运行项目时&#xff0c;如果项目中使用了第三…

CTF CRYPTO 密码学-2

题目名称&#xff1a;enc 题目描述&#xff1a; 字符 ZZZZ X XXZ ZZ ZXZ Z ZXZ ZX ZZX XXX XZXX XXZ ZX ZXZZ ZZXZ XX ZX ZZ 分析 此字段是由Z和X组成的字符&#xff0c;联想到莫斯密码是由.和-组成的所以接下来可以尝试莫斯密码解题 解题过程&#xff1a; Step1&#xff1a;…

济南元宇宙赋能新型工业化,助力工业制造业高质量发展

济南工业元宇宙赋能新型工业化&#xff0c;助力工业制造业高质量发展。随着科技的不断发展&#xff0c;新型工业化已成为推动经济发展的重要力量。济南市作为山东省的省会城市&#xff0c;拥有得天独厚的地理优势和资源优势&#xff0c;积极布局工业元宇宙领域&#xff0c;赋能…

12.云原生之kubesphere中应用部署方式

云原生专栏大纲 文章目录 k8s中应用部署Kubernetes常用命令 kubesphere中可视化部署应用创建工作负载服务暴露 helm部署应用helm命令行部署应用kubesphere中使用应用仓库 k8s中应用部署 在k8s中要想部署应用&#xff0c;需要编写各种yaml文件&#xff0c;一旦应用依赖比较复杂…

36V/1.6A两通道H桥驱动芯片-SS8812T可替代DRV8812

由工采网代理的SS8812T是一款双通道H桥电流控制电机驱动器&#xff1b;每个 H 桥可提供输出电流 1.6A&#xff0c;可驱动两个刷式直流电机&#xff0c;或者一个双极步进电机&#xff0c;或者螺线管或者其它感性负载&#xff1b;双极步进电机可以以整步、2 细分、4 细分运行&…

yarn包管理器在添加、更新、删除模块时,在项目中是如何体现的

技术很久不用&#xff0c;就变得生疏起来。对npm深受其害&#xff0c;决定对yarn再整理一遍。 yarn包管理器 介绍安装yarn帮助信息最常用命令 介绍 yarn官网&#xff1a;https://yarn.bootcss.com&#xff0c;学任何技术的最新知识&#xff0c;都可以通过其对应的网站了解。无…

Docker部署Jira、Confluence、Bitbucket、Bamboo、Crowd,Atlassian全家桶

文章目录 省流&#xff1a;注意&#xff1a;解决方案&#xff1a; 1.docker-compose文件2.其他服务都正常启动&#xff0c;唯独Bitbucket不行。日志错误刚启动时候重启后查询分析原因再针对第一点排查看样子是安装的bitbucket和系统环境有冲突问题&#xff1f; 结论&#xff1a…