首页 > 其他分享 >Transformers--4-37-中文文档-七-

Transformers--4-37-中文文档-七-

时间:2024-06-22 14:21:01浏览次数:43  
标签:None Transformers -- 模型 37 默认 bool str model

Transformers 4.37 中文文档(七)

原文:huggingface.co/docs/transformers

骨干

原文链接:huggingface.co/docs/transformers/v4.37.2/en/main_classes/backbones

骨干是用于计算机视觉任务的特征提取模型。可以通过两种方式之一将模型用作骨干:

  • 使用预训练模型初始化AutoBackbone类,

  • 初始化支持的骨干配置并将其传递给模型架构。

使用 AutoBackbone

您可以使用AutoBackbone类初始化一个模型作为骨干,并获取任何阶段的特征图。您可以定义out_indices来指示您想要从哪些层获取特征图。如果您知道层的名称,也可以使用out_features。您可以互换使用它们。如果同时使用out_indicesout_features,请确保它们是一致的。不传递任何特征图参数将使骨干产生最后一层的特征图。为了可视化各个阶段的外观,让我们以 Swin 模型为例。每个阶段负责特征提取,输出特征图。

第一阶段的特征图如下所示。

让我们通过一个示例来看看。请注意,out_indices=(0,)会导致产生模型的 stem。Stem 指的是第一个特征提取阶段之前的阶段。在上图中,它指的是 patch 分区。我们希望从 stem、第一阶段和第二阶段获取特征图。

>>> from transformers import AutoImageProcessor, AutoBackbone
>>> import torch
>>> from PIL import Image
>>> import requests

>>> processor = AutoImageProcessor.from_pretrained("microsoft/swin-tiny-patch4-window7-224")
>>> model = AutoBackbone.from_pretrained("microsoft/swin-tiny-patch4-window7-224", out_indices=(0,1,2))
>>> url = "http://images.cocodataset.org/val2017/000000039769.jpg"
>>> image = Image.open(requests.get(url, stream=True).raw)

>>> inputs = processor(image, return_tensors="pt")
>>> outputs = model(**inputs)
>>> feature_maps = outputs.feature_maps

feature_maps对象现在有三个特征图,每个都可以像下面这样访问。假设我们想要获取 stem 的特征图。

>>> list(feature_maps[0].shape)
[1, 96, 56, 56]

我们可以像下面这样获取第一阶段和第二阶段的特征图。

>>> list(feature_maps[1].shape)
[1, 96, 56, 56]
>>> list(feature_maps[2].shape)
[1, 192, 28, 28]

初始化骨干配置

在计算机视觉中,模型由骨干、neck 和头部组成。骨干提取特征,neck 转换骨干的输出,头部用于主要任务(例如目标检测)。您可以通过将模型配置传递给backbone_config来使用模型骨干初始化 neck 和头部。例如,您可以看到如何使用 ResNet 骨干初始化带有实例分割头部的 MaskFormer 模型。

from transformers import MaskFormerConfig, MaskFormerForInstanceSegmentation, ResNetConfig

backbone_config = ResNetConfig.from_pretrained("microsoft/resnet-50")
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)

您还可以使用随机权重初始化骨干,以初始化模型的 neck。

backbone_config = ResNetConfig()
config = MaskFormerConfig(backbone_config=backbone_config)
model = MaskFormerForInstanceSegmentation(config)

通过TimmBackboneTimmBackboneConfig,transformers 还支持timm模型。

from transformers import TimmBackboneConfig, TimmBackbone

backbone_config = TimmBackboneConfig("resnet50")
model = TimmBackbone(config=backbone_config)

回调函数

原始文本:huggingface.co/docs/transformers/v4.37.2/en/main_classes/callback

回调函数是可以自定义 PyTorch Trainer 训练循环行为的对象(此功能尚未在 TensorFlow 中实现),可以检查训练循环状态(用于进度报告、在 TensorBoard 或其他 ML 平台上记录…)并做出决策(如提前停止)。

回调函数是“只读”代码片段,除了它们返回的 TrainerControl 对象外,它们不能更改训练循环中的任何内容。对于需要更改训练循环的自定义内容,您应该子类化 Trainer 并覆盖您需要的方法(请参阅 trainer 以获取示例)。

默认情况下,TrainingArguments.report_to设置为"all",因此 Trainer 将使用以下回调函数。

  • DefaultFlowCallback 处理日志记录、保存和评估的默认行为。

  • 使用 PrinterCallback 或 ProgressCallback 显示进度并打印日志(如果通过 TrainingArguments 停用 tqdm,则使用第一个,否则使用第二个)。

  • 如果 tensorboard 可访问(通过 PyTorch >= 1.4 或 tensorboardX),则使用 TensorBoardCallback。

  • 如果安装了wandb,则使用 WandbCallback。

  • 如果安装了comet_ml,则使用 CometCallback。

  • 如果安装了mlflow,则使用 MLflowCallback。

  • 如果安装了neptune,则使用 NeptuneCallback。

  • 如果安装了azureml-sdk,则使用 AzureMLCallback。

  • 如果安装了codecarbon,则使用 CodeCarbonCallback。

  • 如果安装了clearml,则使用 ClearMLCallback。

  • 如果安装了dagshub,则使用 DagsHubCallback。

  • 如果安装了flyte,则使用 FlyteCallback。

  • 如果安装了dvclive,则使用 DVCLiveCallback。

如果安装了某个软件包,但您不希望使用相应的集成,可以将TrainingArguments.report_to更改为您想要使用的集成列表(例如["azure_ml", "wandb"])。

实现回调的主要类是 TrainerCallback。它获取用于实例化 Trainer 的 TrainingArguments,可以通过 TrainerState 访问该 Trainer 的内部状态,并可以通过 TrainerControl 对训练循环采取一些操作。

可用的回调

以下是库中可用的 TrainerCallback 列表:

class transformers.integrations.CometCallback

< source >

( )

一个将日志发送到Comet ML的 TrainerCallback。

setup

< source >

( args state model )

设置可选的 Comet.ml 集成。

环境:

  • COMET_MODE (str, 可选,默认为ONLINE): 是否创建在线、离线实验或禁用 Comet 日志记录。可以是OFFLINEONLINEDISABLED

  • COMET_PROJECT_NAME (str, 可选): 用于实验的 Comet 项目名称。

  • COMET_OFFLINE_DIRECTORY (str, 可选): 在COMET_MODEOFFLINE时用于保存离线实验的文件夹。

  • COMET_LOG_ASSETS (str, 可选,默认为TRUE): 是否将训练资产(tf 事件日志、检查点等)记录到 Comet。可以是TRUEFALSE

有关环境中可配置项目的详细信息,请参阅此处

class transformers.DefaultFlowCallback

< source >

( )

处理训练循环的默认流程,包括日志、评估和检查点的 TrainerCallback。

class transformers.PrinterCallback

< source >

( )

一个简单的 TrainerCallback,只打印日志。

class transformers.ProgressCallback

< source >

( )

一个显示训练或评估进度的 TrainerCallback。

class transformers.EarlyStoppingCallback

< source >

( early_stopping_patience: int = 1 early_stopping_threshold: Optional = 0.0 )

参数

  • early_stopping_patience (int) — 与metric_for_best_model一起使用,当指定的指标在early_stopping_patience次评估调用中恶化时停止训练。

  • early_stopping_threshold(float, 可选) — 与 TrainingArguments 的metric_for_best_modelearly_stopping_patience一起使用,表示指定指标必须改善多少才能满足提前停止条件。

一个处理提前停止的 TrainerCallback。

此回调取决于 TrainingArguments 参数load_best_model_at_end功能,以在 TrainerState 中设置 best_metric。请注意,如果 TrainingArguments 参数save_stepseval_steps不同,则直到下一个保存步骤才会发生早停。

class transformers.integrations.TensorBoardCallback

<来源>

( tb_writer = None )

参数

  • tb_writerSummaryWriter可选)—要使用的写入器。如果未设置,将实例化一个。

一个 TrainerCallback,将日志发送到TensorBoard

class transformers.integrations.WandbCallback

<来源>

( )

一个 TrainerCallback,将指标、媒体、模型检查点记录到Weights and Biases

setup

<来源>

( args state model **kwargs )

设置可选的 Weights & Biases(wandb)集成。

如果需要,可以子类化并重写此方法以自定义设置。在这里找到更多信息。您还可以重写以下环境变量:

环境:

  • WANDB_LOG_MODELstr可选,默认为"false"):是否在训练期间记录模型和检查点。可以是"end""checkpoint""false"。如果设置为"end",模型将在训练结束时上传。如果设置为"checkpoint",将在每次args.save_steps保存时上传检查点。如果设置为"false",模型将不会上传。与load_best_model_at_end()一起使用以上传最佳模型。

    在 5.0 中已弃用

    标签:None,Transformers,--,模型,37,默认,bool,str,model
    From: https://www.cnblogs.com/apachecn/p/18262266

相关文章

  • Java 8 Stream
    Java8StreamJava8新特性Java8新特性Java8API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream使用一种类似用SQL语句从数据库查询数据的直观方式来提供一种对Java集合运算和表达的高阶抽象。StreamAPI可以极大提高Java程序员的生产力,......
  • GDB配置
    gdb--help # 可查看配置文件路径全局配置/etc/gdbinit;用户配置文件~/.gdbinit美观打印STL当你尝试使用GDB的"print"(打印)命令来显示向量、堆栈或任何其他GDB抽象数据结构的内容时,你将得到无用的结果。GDB7.0之后,将支持用Python编写pretty-printers这一特性配合libstdc......
  • [题解]AT_abc267_f [ABC267F] Exactly K Steps
    大家好,我是毒瘤,喜欢用玄学算法过题。发现题解区没有这个做法,于是来发一篇。思路不难发现如果一个点对\((u,v)\)的距离为\(d\),那么在这棵树以\(u\)为根时,\(v\)的深度为\(d\)。于是考虑换根DP。首先思考如何计算答案。显然我们可以将查询离线下来,然后当换根到以\(u\)......
  • java多线程编程问题以及解决办法
    java多线程编程问题以及解决办法  多线程编程虽然可以提高程序的性能和响应速度,但也带来了许多复杂的问题,如竞态条件、死锁、线程安全问题、内存一致性错误等。常用的解决方法包括使用同步机制(如synchronized和ReentrantLock)、线程池、volatile关键字、以及合适的线程间......
  • 【单片机毕业设计选题24021】-植物培养室温度自动调节系统
    系统功能:系统功能框图:主要功能模块原理图:电源时钟烧录接口:单片机和按键输入电路:温度采集及控制电路:资料获取地址系统主要功能模块代码初始化代码:/*USERCODEBEGIN1*//*USERCODEEND1*//*MCUConfiguration-------------------......
  • 基于Django的智慧校园考试的设计与实现
    一、项目背景1.1项目研究背景在信息技术日益发展的今天,传统的教育模式正面临着重大的挑战与改革。尤其是在全球新冠疫情的影响下,线上教学模式成为常态,这促使学校、教育机构急需一套高效、可靠且用户友好的在线考试系统来适应这一变化。基于这样的背景,我们提出了开发“智慧校......
  • 哈夫曼树(软件设计师)
    上半年的软件设计师考完了,许多同学对于哈夫曼树的大题看不懂。其实这个是很好拿分的,你完全不用去理解,你了解一次就行,就能做出题目。 这题一看就要我们构造哈夫曼树,题目不讲就能知道。 选出最小的两个结合成一个大的,再根据剩下的选出两个小的结合成一个大的。   做一......
  • LeetCode 2542. 最大子序列的分数(贪心、小顶堆)
    2542.最大子序列的分数思路:先对nums2按降序排列,然后遍历nums2的最小值,同时在区间[0,i]中选中k个最大的nums1即可。然后找出最大的ansclassSolution{public:typedefpair<int,int>PII;longlongmaxScore(vector<int>&nums1,vector<int>&nums2,intk)......
  • 论文文献的注解
    最近在要开始准备写论文了,所以也去了解了论文的格式和一些要求。今天先来记录下如何快速将那些网站上的论文插入到我们的文章里。首先要准备EndNode软件,我把他放在网盘里自取。 百度网盘链接:https://pan.baidu.com/s/1FEGltRWkeT9W-ePEf-sdpw?pwd=ngzg 提取码:ngzg夸克网......
  • Gstreamer custom log
    Gstreamerlogintroduce文章目录Gstreamerlogintroduce一、gstreamerdebuglog介绍二、Gstreamerdebuglog初始化1.gstreamerlog初始化flow2.gstreamerdefaultoutputlogformat三、Gstreamercustomlog总结一、gstreamerdebuglog介绍gstreamerdefa......