(DINO) Emerging Properties in Self-Supervised Vision Transformers——自监督ViT的新属性和几点思考

论文地址 ,仅学习参考


目录

摘要

实验结果 

Self-distillation with no labels (本文实验架构-自监督+ViT)

DINO的消融实验

总结 

研究现状

方法

相关工作

几点思考 


摘要

文章初心 :探究自监督下的ViT是否出现新的属性

发现

  • 1.与监督ViT相比,自监督ViT特征包含了关于图像语义分割的显示信息(特定类特征

  • 2.关于图像语义分割的特征作为K-NN分类器时,达到78.3% -samll ViT ImageNet top-1

强调重要性

  • momentum encoder(动量编码)-MOCO
  • multi-crop training(多裁剪训练)
  • the use of small patches with ViTs

实验论证

a simple self-supervised method-DINO( a form of self-distillation with no labels)

  • ImageNet上线性评估-DINO与ViTs协同-Top 1

扩:

Self-Supervised + ViT = 提高效果

  • MoCo-Momentum Encoder就是当更新了左边query的encoder后,并不是直接就复制到key encoder中使用,而是用一定的比例去更新这个key。
  • K-NN分类器:K-Nearest Neighbor Classification,“近朱者赤近墨者黑”思想。

例如,一条直线的颜色判断,靠近直线的橙色小球更近、多,则直线受其影响更大为橙色。 

  •  multi-crop training

  •  ImageNet:ImageNet是一个根据WordNet层次结构(目前只有名词)组织的图像数据库,其中层次结构的每个节点由成百上千张图像描述。该项目在推进计算机视觉深度学习研究方面发挥了重要作用。研究人员可以免费获得这些数据用于非商业用途。

实验结果 

1 与ImageNet上的SSL(Self-Supervised Learning)框架比较,包括同架构/跨架构

  • 比较同架构(自监督方法+架构): 
    在ViT架构,在线性分类器和K-nn分类器,DINO都优于 BYOL, MoCov2 and SwAV。  
  • throughput (im/s) :吞吐量

  •  比较跨架构:
  • DINO训练更大的ViT可以提高性能,但减少补丁的大小,对性能影响更大。
  • 减少补丁的大小不会增加参数,但是会显著减少运行时间,更多的内存使用。

2 使用SSL训练的ViT的特性

  • 评估DINO特征的属性:最邻近搜索、保留对象位置信息转移给下游任务。

2.1 DINO  ViT的最邻近搜索

Image Retrieval

  • 特征依靠最邻近搜索
  • Oxford and Paris image retrieval datasets:包含3种难度系数逐渐增加的查询/数据库
  • the Mean Average Precision (mAP):平均精度
  • Google Landmarks v2 (GLDv2):a dataset of landmarks designed for retrieval purposes.
  • DINO特征优于带有标签ImageNet上训练过的特征。
  • 在GLDv2上训练的DINO ViT特性非常好,优于以前发布的基于现成描述符的方法。

Copy detection:DINO ViT 在a copy detection task的性能,该任务是识别被模糊、插入、打印和扫描等所扭曲的图像。
  •  DINO训练的ViT在Copy detection方面非常具竞争力。

 2.2 场景的语义分布-图像分割

视频实例分割

  • 不在特征上训练任何模型,也不为任务调整任何权重。
  • 即使本次目标是针对密集任务的,但此基准测试的性能依旧体现其具有竞争力。

分析自我注意图

  • 不同的head可以注意图像的不同语义区域,即便遮挡或较小。
遮挡:第三行灌木丛;第二行标志
  •  一个有监督的ViT不能很好地处理存在杂波的物体。
  • 自我注意地图是平滑的,并没有优化以产生一个掩模。尽管如此,我们还是看到了监督模型或DINO模型之间的明显差异,在Jaccard相似性方面有明显的差异。
  • 自监督卷积也包含关于分割的信息,但它需要专门的方法来从它们的权重中提取它。

2.3对下游任务的转移学习

  • 对于ViT架构,自我监督的预训练比经过监督训练的特征传输更好,这与在卷积网络上的观察结果是一致的。
  • 自我监督的预训练大大提高了ImageNet的结果。


Self-distillation with no labels (本文实验架构-自监督+ViT)

 简单起见,在一对视图(x_{1},x_{2})情况下说明DINO:

  • 图像X
  • 经过2种随机转换成2张不同的图像x_{1},x_{2},分别送给the student/teacher network
  • the student-teacher network,拥有相同的结构,不同的参数
  • treacher network的输出为该batch计算的平均值为中心,teacher结构相当于原始的复杂的深度神经网络结构,student则是一种轻量级的网络结构;因此teacher会有更高的预测准确率,它会指导student到达在简化参数之后最好的模型效果。
  • 每个网络输出一个K维特征,该特征在特征维度上应用a temperature softmax归一化。
  • 交叉熵损失来测量它们的相似性。
  • Teacher应用a stop-gradient (sg) operator,只通过student传播梯度。教师参数用学生参数的指数移动平均线(an exponential moving average,ema)进行更新。我们观察到,使用前一个时期的教师不会崩溃,这在k-NN评估中提供的性能与现有框架如MoCo-v2或BYOL竞争。(我们考虑使用上次迭代中的学生网络,传送给教师。)

知识蒸馏-Distilling the knowledge in a neural network 

知识蒸馏:主要思想是训练一个小的网络模型来模仿一个预先训练好的大型网络或者集成的网络。这种训练模式又被称为 "teacher-student",大型的网络是“老师”,小型的网络是“学生”。 Temperature,缩放因子,用以控制概率分布的平滑度,这个值越高说明预测结果的概率分布变的越soft。


DINO的消融实验

 1.不同组件的重要性

  • momentum:缺失则不工作 row2
  • SK:存在可避免崩溃 row9,但row3-momentum+SK-性能有所下降
  • row3、9-强调了momentum的重要性
  • row4、5-多裁剪训练和the cross-entropy loss是DINO获得良好特征的重要组成部分。
  • row6-在 the student network添加一个预测器几乎没有影响,而在BYOL中,它对于防止崩溃是至关重要的。

Importance of the patch size
  • 随着补丁大小的减小,性能会大大提高。如果不添加其他参数,就可以大大提高性能。然而,使用较小补丁的性能提高是以牺牲吞吐量为代价的:当使用5×5补丁时,吞吐量下降到44im/s,而8×8补丁的吞吐量为180im/s。

 2.Impact of the choice of Teacher Network

Building different teachers from the student

  • (left) Comparison between the performance of the momentum teacher and the student during training.
  • (right) Comparison between different types of teacher network. The momentum encoder leads to the best performance but is not the only viable option.

Analyzing the training dynamic 

  •  A key observation is that this teacher constantly outperforms the student during the training, and we observe the same behavior when training with a ResNet-50.
  • Polyak-Ruppert averaging is often used to simulate model ensembling to improve the performance of a network at the end of the training.
  • Our method can be interpreted as applying Polyak-Ruppert averaging during
    the training to constantly build a model ensembling that has superior performances. This model ensembling then guides the training of the student network.

3. Avoiding collapse

  • 研究中心和目标锐化对避免崩溃的互补作用。 
  • 两种崩溃,无论输入如何,模型输出在所有维度上都是一致的或由一维主导。
  • 互补性:中心避免了由一个主导维度引起的崩溃,但鼓励了一个均匀的输出,而锐化则会产生相反的效果。
  • Kullback-Leibler divergence (“KL”),KL等于零表示恒定的输出,因此出现一个崩溃。
  • we plot the entropy and KL during training with and without centering and sharpening. If one operation is missing, the KL converges to zero, indicating a collapse.
 (left): evolution of the teacher’s target entropy along training epochs;
(right): evolution of KL divergence between teacher and student outputs.

 4.Compute requirements

  • we detail the time and GPU memory require ments when running ViT-S/16 DINO models on two 8-GPU machines.
  • Overall, training DINO with Vision Transformers achieves 76 . 1 top-1 accuracy using two 8-GPU servers for 3 days.

 5.Training with small batches

  • Note that the experiment with batch size of 128 runs on only 1 GPU.We have explored training a model with a batch size of 8, reaching 35.2% after 50 epochs, showing the potential fortraining large models that barely fit(不适合) an image per GPU.

总结 

  • self-supervised  pretraining a standard ViT models,achieving performance that are comparable with the best convnets specifically designed for this setting.
  • We have also seen emerged two properties that can be leveraged in future applications:
    the quality of the features in k -NN classification has a potential for image retrieval where ViT are already showing promising results.
    the presence of information about the scene layout in the features can also benefit weakly supervised image segmentation. 
  •  the main result of this paper:自监督学习可能是开发基于ViT的BERT-like模型的关键。
  • 未来:计划探索一个在随机未管理的图像上使用DINO的大型ViT模型进行预训练是否可以推动视觉特征的极限。

研究现状

1.Vision Transformers:计算要求高,需要的训练数据多,特征并没有表现出独特的特性。

2.ViT发展缓慢的原因是否在于其预训练中使用了监督?这个问题灵感来源于,对比NLP中如BERT/GPT(BERT采用了Transformer Encoder的模型来作为语言模型),其成功的主要因素包含自监督的预训练--这些自我监督的训练前目标使用句子中的单词来创建借口任务,预测每个句子的单个标签的监督目标提供更丰富的学习信号类似地,在图像中,图像提升监督常常将图像中包含的丰富的视觉信息简化为从预定义的几千个类别的对象集中选择的单一概念。(convnet:卷积神经网络

  • 自监督的ViT特性显式地包含场景布局,特别是对象边界,如图所示。此信息可以直接在最后一个方块的自我注意模块中进行访问。

  • 自监督的ViT特征在基本的最近邻分类器(k-NN)下表现特别好,没有任何优化、线性分类器和数据增强,在ImageNet上实现了78.3% top1。
  • 分割掩模的出现似乎是自监督方法之间共有的一种特性。然而,只有在结合动量编码器和多裁剪增强时,k-NN才能获得良好的性能。我们研究的另一项发现是使用较小的ViT补丁来提高结果特征的质量的重要性。

综上,我们关于这些组件的重要性的发现促使我们设计了一个简单的自我监督方法DINO。

  • 我们的方法只能处理teacher输出的中心和锐化,以避免崩溃,而其他流行的组件,如预测器、高级归一化或对比损失,在稳定性或性能方面几乎没有什么意义。
  • 特别重要的是,我们的框架是灵活的,并且可以同时处理卷积和ViT,而不需要修改架构,也不需要适应内部规范化。
  • 验证了DINO和Vit之间的协同作用,通过在ImageNet线性分类基准上超越之前的自监督特征,以80.1%的ViT之间的协同作用。
  • 还通过将DINO与ResNet-50体系结构相匹配,来确认DINO与卷积一起工作。最后,我们讨论了在计算和内存容量有限的情况下使用DINO与VITs的不同场景。

方法

1.SSL with Knowledge Distillation

  • 同最近的自监督方法+与知识蒸馏相似,实现算法如下

  • 知识蒸馏是一种学习范式,我们训练一个学生网络g\theta _{s}来匹配一个给定的教师网络g\theta _{t}的输出,分别由g\theta _{s}g\theta _{t}参数化。给定一个输入图像X,两个网络在K维上的输出概率分布都用P_{s}P_{t}表示。用softmax函数将网络g的输出归一化,得到概率P。

  • \tau _{t}:控制输出分布的锐度,类似的公式也适用于temperature为\tau _{t}P_{t}。给定一个固定的教师网络g\theta _{t},我们学习通过最小化交叉熵损失w.r.t.来匹配这些分布学生网络θs的参数:

  • 详细说明:如何将公式2的问题应用到自监督学习中。首先,我们使用多剪切策略构建图像的不同扭曲视图或裁剪图。更准确地说,从一个给定的图像中,我们生成一个不同视图的集合V。该集包含两个全局视图,x_{1}^{g}x_{2}^{g},以及几个分辨率较小的局部视图。所有的裁剪都通过学生,而只有全局的视点通过老师,因此鼓励“局部-全局”的通信。我们将损失最小化:

  • 这种损失是通用的,可以用于任意数量的视图,甚至只有2个。但是,我们遵循多剪裁的标准设置,使用分辨率为224^{2}的两个全局视图,覆盖原始图像的一个大区域(例如大于50%),以及分辨率为96^{2}的一些局部视图,仅覆盖原始图像的一个小区域(例如小于50%)。除非另有说明,否则我们将此设置称为DINO的基本参数化。 
  • 这两个网络共享相同的架构g,不同的参数\theta _{s}\theta _{t}。我们通过最小化公式来学习参数\theta _{s}。公式3具有随机梯度下降。
Teacher network
  • 与知识蒸馏不同,我们没有预先给定的教师gθt,因此,我们从学生网络的过去迭代中构建它。我们在Building different teachers from the student中研究了教师的不同更新规则,并表明在我们的框架中,在一个周期内冻结教师网络令人惊讶地有效,而为教师复制学生的权重却无法收敛。特别有趣的是,在学生的权重上使用指数移动平均线(EMA),即动量编码器,特别适合我们的框架。
  • 最初,动量编码器作为对比学习中队列的替代品被引入。然而,在我们的框架中,它的作用有所不同,因为我们没有队列或对比损失,并且可能更接近于在自我训练中使用的平均教师的角色。事实上,我们观察到,这位教师执行了一种类似于模型集成形式的多聚亚克-鲁珀特平均与指数衰减。使用聚矩阵平均进行模型集成是提高模型性能的标准实践。
  • 我们观察到,这位教师在整个训练过程中比学生表现更好,因此,通过提供更高质量的目标特征来指导学生的培训。这种动态在以前的工作中没有被观察到
Network architecture
  • 神经网络g由主干f(ViT或ResNet)和projection head:h:g=h◦f 组成。在下游任务中使用的特性是骨干f输出。投影头由一个隐藏维度为2048的三线多层感知器(MLP)组成,然后是L2和一个具有K维的权重归一化全连接层,这与SwAV的设计相似。我们已经测试了其他的投影头,这种特殊的设计似乎最适合DINO。
  • 我们没有使用预测器,从而在学生和教师网络中产生完全相同的架构。我们注意到与标准卷积不同,ViT架构在默认情况下不使用批处理规范化(BN)。因此,当将DINO应用于ViT时,我们也不会在投影头中使用任何BN,这使系统完全没有BN。
Avoiding collapse
  • 一些自监督方法的不同之处在于用于避免崩溃的操作,或通过对比损失、聚类约束、预测器或批处理归一化。虽然我们的框架可以通过多个规范化来稳定,但它也可以只工作在一个中心和锐化的动量教师输出,以避免模型崩溃。中心能防止一维主导,但鼓励崩溃到均匀分布,而锐化有相反的效果。应用这两种操作可以平衡它们的效果,这足以在动量老师面前避免崩溃。选择这种方法以避免崩溃,以减少对批量的依赖来换取稳定性。
  • 定心操作只依赖于一级批统计,可以解释为为教师添加一个偏差项c:

2.Implementation and evaluation protocols

Vision Transformer:我们遵循在DeiT中使用的实现,我们向序列添加了一个额外的可学习令牌。这个标记的作用是从整个序列中聚合信息,并将投影头h附加到其输出处。我们将此令牌称为类令牌[CLS],以与以前的工作保持一致,即使在我们的案例中,它没有附加到任何标签或监督上。这一组补丁令牌和[CLS]令牌被输入到一个具有“预规范”层标准化的标准Transformer网络中。Transformer是一系列自注意和前馈层,与跳过连接并行。自我注意层通过使用注意机制查看其他标记表示来更新标记表示。

Implementation details:一些参数设置,不细讲

Evaluation protocols

  • 自监督学习的标准协议要么是在冻结特征[上学习线性分类器,要么是在下游任务上微调特征。
  • 对于线性评估,我们在训练过程中应用随机裁剪作物的大小和水平翻转增强,并记录中心裁剪的准确性。
  • 为了进行微调评估,我们用预先训练过的权值初始化网络,并在训练过程中调整它们。然而,这两种评估都对超参数都很敏感,例如,我们在改变学习速率时,观察到运行之间的准确性有很大的差异。因此,我们也使用中的简单加权最近邻分类器(k-NN)来评估特征的质量。
  • 我们冻结了训练前模型,以计算和存储下游任务的训练数据的特征。然后,最近邻分类器将图像的特征与投票给标签的k个最近的存储特征进行匹配。我们扫描了不同数量的最近邻居,发现20NN在我们的大部分运行中运行最好。此评估协议不需要任何其他超参数调优,也不需要数据增强,只能通过一次操作即可运行。

相关工作

  • Self-supervised learning:创建实例分类器,它将每个图像看作一个不同的类,并通过区分它们直到数据增强来训练模型。然而,显式学习分类器来区分所有图像不能很好地扩展图像的数量。目前,我们可以学习无监督的特征,而不区分图像。
  • BYOL-度量学习公式,其中特征与动量编码器获得的表示匹配来训练。像BYOL这样的方法即使没有动量编码器也能工作,但以性能的下降为代价。本文的方法的灵感来自BYOL,但具有不同的相似性匹配损失,并对学生和教师使用完全相同的体系结构。这样,我们的工作就完成了在BYOL中启动的自我监督学习的解释,作为一种没有标签的平均teacher自我蒸馏的形式。
  • Self-training and knowledge distillation:自我训练旨在通过将少量的初始注释集传播到大量的未标记的实例集来提高特征的质量。这种传播可以通过标签的硬分配或软分配来完成。当使用软标签时,该方法通常被称为 知识蒸馏主要被设计用来训练一个小网络来模拟一个更大网络的输出来压缩模型。 研究表明,蒸馏可以在自我训练管道的过程中传播软伪标签到未标记的数据,在自我训练和知识蒸馏之间建立了重要的联系。 我们的工作建立在这种关系之上,并将知识蒸馏扩展到没有标签可用的情况, 我们的teacher是在训练过程中动态地建立起来的。知识蒸馏,而不是被用作自我监督的预训练的后处理步骤,而是直接转化为一个自我监督的目标。最后,我们的工作也与共蒸馏有关,其中学生和教师有相同的架构,并在训练过程中使用蒸馏。然而, 辅蒸馏的老师也从学生身上蒸馏 ,而它更新了我们工作中学生的平均水平。

几点思考 

1 作者为什么要做这个研究,研究动机?主要基于怎样的思想来指定?

  • 研究ViT与卷积神经网络之间的区别,应用自监督学习进一步探索其展示出的新属性。ViT灵感来源于NLP,但它还没有体现明显的优势,因为其计算要求高、需要的训练数据集多,特征表现不突出。作者设想:是不是ViT预训练时使用了监督式学习导致其发展缓慢?作者依据:Transformer在NLP中成功的主要因素之一是使用了自监督的预训练。在NLP中,自监督预训练目标利用句子中的单词,能够提供能更丰富的学习信号,监督式则预测每句话的单个标签。相似地,在图片中,图像级监督会降低图像丰富的视觉信息,仅从预定义的几千个类别对象中选择单一概念来简化信息。类比,自监督方法应用于ViT/卷积的效果如何? 目前工作:自监督+卷积的形式展示了一些可能性,这些工作结构相似,但避免崩溃等问题或提高性能所使用的组件相异,但不影响借鉴学习。在此基础上,作者开始研究自监督预训练给ViT特征带来的影响?实验后得到一些发现,即研究成果。
  • Why?Transfomer在NLP中的发展迅速,而ViT中发展较慢,经过架构对比,自监督/监督的影响令人关注,即自监督的ViT是不是也能像NLP那样带来好效果/新发现?
  • 监督和自监督的区别?
  1. 有监督:用有标签的数据训练;已知数据和其一一对应的标签,训练一个智能算法,将输入数据映射到标签的过程。监督学习是最常见的学习问题之一,就是人们口中常说的分类问题。比如已知一些图片是猪,一些图片不是猪,那么训练一个算法,当一个新的图片输入算法的时候算法告诉我们这张图片是不是猪。
  2. 自监督:无标注数据上训练,通过一些方法让模型学习到数据的inner representation,再接下游任务,例如加一个mlp作为分类器等。但接了下游任务之后还是需要在特定的有标签数据上finetune,只是有时候可以选择把前面的层完全固定,只finetune后面接的网络的参数。
  3. Pretext Task (委托任务)设计出能帮助理解 Content 的辅助任务的一类方法。

2 研究成果

  • 监督ViT以及卷积神经网络网络相比自监督ViT中的特征包含图像语义分割的显式信息,包含场景布局,特别是对象边界,此信息可以直接在最后一个方块的自我注意模块中进行访问,相关信息在监督ViT、卷积神经网络中都没有明显的展现出来。
  • 自监督ViT的特征可以作为优秀的k-NN分类器结合一个小型的ViT,没有任何优化、线性分类器以及数据增强时,能够在ImageNet达到78.3%,位列第一的效果。
  • 消融实验中,强调了momentum encoder,multi-crop training ,the use of small patches with ViTs的重要性。较小的补丁能够提高结果特征的质量。
  • 根据发现,通过一个简单的自监督方法DINO-没有标签的自蒸馏方法,探索DINO和ViTs的协同作用,通过ViT-Base的线性评估,其在ImageNet上达到了80.1%,位列第一的效果。

3 研究过程

  • DINO——来源于Teacher-Student (Knowledge Distillation)是一种相当有效率的半监督?做法,他的精神类似 SSL 并且能从 Data 本身获取更多的信息。本文Teacher应用a stop-gradient (sg) operator,只通过student传播梯度。教师参数用学生参数的指数移动平均线(an exponential moving average,ema)进行更新。

  • DINO训练更大的ViT可以提高性能,但减少补丁的大小,对性能影响更大。
  • 减少补丁的大小不会增加参数,但是会显著减少运行时间,更多的内存使用。
  • DINO特征优于带有标签ImageNet上训练过的特征。
  • 在GLDv2上训练的DINO ViT特性非常好,优于以前发布的基于现成描述符的方法。
  • DINO训练的ViT在Copy detection(该任务是识别被模糊、插入、打印和扫描等所扭曲的图像。)方面非常具竞争力。
  • 不同的head可以注意图像的不同语义区域,即便遮挡或较小。
  •  一个有监督的ViT不能很好地处理存在杂波的物体。
  • 对于ViT架构,自我监督的预训练比经过监督训练的特征传输更好,这与在卷积网络上的观察结果是一致的。自我监督的预训练大大提高了ImageNet的结果。

4 这个研究的意义在哪里?

  • 这个研究将自监督方法与ViT相结合,发现了一些新属性,对提高性能/图像搜索/K-NN分类器/Copy detection下游任务方面都具有一定的指导意义,而且一旦自监督方法可行,其将带来丰富的视觉信息,避免依靠标记的代价昂贵,进一步实现智能化。

6 这个研究的局限性

  • 只有在结合momentum encoder动量编码器和multi-crop augmentation多剪裁增强时,k-NN才能获得良好的性能。
  • 批处理大小为128、1个GPU运行。因为已训练一个批大小为8的模型,在50个epoch后达到35.2%,显示了大模型训练几乎不适合单图单GPU?
  • Note that the experiment with batch size of 128 runs on only 1 GPU.  We have explored training a model with a batch size of 8 ,  reaching 35 . 2% after 50 epochs, showing the potential for training large models that barely fifit an image per GPU.

7 这个研究对我的研究方向有什么启迪? 

  • 学习方面:知识蒸馏(Knowledge Distillation, KD)技术、student-teacher Network、K-NN、
  • 进一步思考:student-teacher半监督?翻译?
  • 仅研究成果而言,ViT结合自监督方法-主要得到图像语义分割的特征图,这里的语义分割依靠学习特定类特征进行分割。
  • 深度估计-自监督方法——知识蒸馏是否可以尝试引用?

 

欢迎交流呀~ 


http://www.niftyadmin.cn/n/634369.html

相关文章

如何用R语言进行云计算

如今,几乎所有领域或业务活动正在通过SMAC进行数据转换。SMAC指的是社交(Socia)、移动(Mobile)、分析(Analytics)和云服务(Cloud)。这个改变的影响已经涉及到包括组织、人…

关于Ubuntu18.04更换国内源的方法

参考这篇文章 https://blog.csdn.net/daerzei/article/details/84873964

UFO- ViT : High Performance Linear Vision Transformer without Softmax-没有Softmax的高性能线ViT

论文地址:lUFO- ViT : High Performance Linear Vision Transfrmer without Softmax Unit Force Operated Vision Transformer, UFO-ViT associative law of matrix multiplication → eliminates softmax function to use 矩阵乘法结合律代替softmax函数XNorm / …

Windows 远程终端到 ubuntu——文件传输

WinSCP :: Official Site :: Download 该软件能够将本机Window下 的文件无缝传输到本机所连接的服务器的文件夹下,安利!

《UNIX网络编程 卷1:套接字联网API(第3版)》——8.11 UDP的connect函数

本节书摘来自异步社区《UNIX网络编程 卷1:套接字联网API(第3版)》一书中的第8章,第8.11节,作者:【美】W. Richard Stevens , Bill Fenner , Andrew M. Rudoff著,更多章节内容可以访问云栖社区“…

【PyCharm】 : Cannot open Local Terminal Failed to start [powershell.exe] in C:\Users\.......的原因(高效解决)

1.设置的路径是否出现问题(只是一种可能,有的时候不需修改也可以) File- Settings - Terminal修改 Shell path powershell.exe 为 C:\Windows\System32\cmd.exe.2.检查电脑环境变量(这里是重点) 此电脑-属性-高级系…

bug8 eclipse项目导入到myeclipse时 Target runtime com.genuitec.runtime.generic

1.新导入的工程,出问题很大可能是jdk的版本问题导致,检查一下,发现jdk果然不一致,修改了jdk版本,但异常没有消除 2.网上查询下解决方案,原来在工程目录下的settings,有个文件也需要修改下 3.打开…

【深度学习笔记】-代码解读1

代码借鉴-很好的入门资源推荐 ​​​​​​​(11条消息) 「深度学习一遍过」必修1:Windows10 下 Pytorch 的安装与环境配置_荣仔的博客-CSDN博客 在原博主的代码上,进一步进行注释~ from __future__ import print_function import argparse import torc…