首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

1.4 基础组件之Model(上)基本使用

  • 25-02-16 23:42
  • 3823
  • 8230
blog.csdn.net

目录

1 Model简介:

2 Model基本使用方法:

2.1 模型下载:

2.1.1 在线下载: 

2.1.2 离线下载:

2.1.3 git clone下载:

2.2 模型加载参数:

2.2 模型调用:

2.2.1 输入进tokenizer:

2.2.2 不带model head的模型调用:

2.2.3 带model head的模型调用:


1 Model简介:

2 Model基本使用方法:

2.1 模型下载:

2.1.1 在线下载: 

2.1.2 离线下载:

通过浏览器下载后,放到项目文件夹下进行离线下载: 

2.1.3 git clone下载:

第一个指令是下载这个模型所有的文件,由于我们只需要pytorch文件,因此可以使用第二条指令。

2.2 模型加载参数:

可以通过model.config查看模型的配置,但是显示的参数并不齐全,本身我们能修改的参数该如何查看呢?

 这个还是需要我们通过config的自动补全来进行查看:

我们可以通过进入上述的BertConfig中查看详细配置

2.2 模型调用:

2.2.1 输入进tokenizer:

这里的return_tensors="pt"是指定tokenizer返回PyTorch张量(tensors)格式的输入。当使用return_tensors="pt"参数时,tokenizer会将输入文本编码为PyTorch张量形式,方便后续在PyTorch模型中进行处理。

带 return_tensors="pt":


{'input_ids': tensor([[ 101, 2483, 2207, 4638, 2769, 738, 3300, 1920, 3457, 2682, 8013, 102]]), 'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]), 'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]])}

不带 return_tensors="pt":

{'input_ids': [101, 2483, 2207, 4638, 2769, 738, 3300, 1920, 3457, 2682, 8013, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}

第一个数据结构是使用PyTorch张量(Tensor)表示的字典形式。其中,input_ids、token_type_ids和attention_mask分别对应了不同的键。每个键对应的值都是一个PyTorch张量。

  1. input_ids的值是形状为(1, 12)的长整型张量,表示输入的标记序列。
  2. token_type_ids的值是形状为(1, 12)的长整型张量,表示输入的标记类型。
  3. attention_mask的值是形状为(1, 12)的长整型张量,表示输入的注意力掩码。

第二个数据结构是使用Python列表表示的字典形式。其中,input_ids、token_type_ids和attention_mask同样对应不同的键,但每个键对应的值都是一个Python列表。

  1. input_ids的值是一个由整数组成的列表,表示输入的标记序列。
  2. token_type_ids的值是一个由整数组成的列表,表示输入的标记类型。
  3. attention_mask的值是一个由整数组成的列表,表示输入的注意力掩码。
2.2.2 不带model head的模型调用:

也就是不带model head的模型调用只能返回编码结果

在深度学习中,模型通常由两部分组成:特征提取器(或称为骨干网络)和模型头(或分类器)。

  1. 不带模型头的模型调用:
    不带模型头的模型通常只包含特征提取器(骨干网络),它负责从输入数据中提取有用的特征表示。这种模型通常在预训练过程中使用大规模数据集进行训练,以学习通用的特征表示能力。在调用时,输入数据经过特征提取器的处理后,得到的特征表示可以用于后续的任务,比如分类、检测、分割等。这种模型调用方式适用于具有相似任务的数据集,可以通过微调(fine-tuning)或特定任务的训练来适应新的任务。

  2. 带有模型头的模型调用:
    带有模型头的模型除了包含特征提取器外,还包含了一个或多个模型头(分类器),用于特定任务的预测。这些模型头通常是在特征提取器的顶部添加的额外层或层序列,用于根据任务要求生成预测结果。在调用时,输入数据首先通过特征提取器获得特征表示,然后这些特征表示被传递到模型头进行预测。这种模型调用方式适用于具体的任务,模型头的结构和参数通常是针对特定任务进行设计和训练的。

最后得到的结果:

BaseModelOutputWithPoolingAndCrossAttentions(last_hidden_state=tensor([[[ 0.6804, 0.6664, 0.7170, ..., -0.4102, 0.7839, -0.0262], [-0.7378, -0.2748, 0.5034, ..., -0.1359, -0.4331, -0.5874], [-0.0212, 0.5642, 0.1032, ..., -0.3617, 0.4646, -0.4747], ..., [ 0.0853, 0.6679, -0.1757, ..., -0.0942, 0.4664, 0.2925], [ 0.3336, 0.3224, -0.3355, ..., -0.3262, 0.2532, -0.2507], [ 0.6761, 0.6688, 0.7154, ..., -0.4083, 0.7824, -0.0224]]], grad_fn=), pooler_output=tensor([[-1.2646e-01, -9.8619e-01, -1.0000e+00, -9.8325e-01, 8.0238e-01, -6.6268e-02, 6.6919e-02, 1.4784e-01, 9.9451e-01, 9.9995e-01, -8.3051e-02, -1.0000e+00, -9.8865e-02, 9.9980e-01, -1.0000e+00, 9.9993e-01, 9.8291e-01, 9.5363e-01, -9.9948e-01, -1.3219e-01, -9.9733e-01, -7.7934e-01, 1.0720e-01, 9.8040e-01, 9.9953e-01, -9.9939e-01, -9.9997e-01, 1.4967e-01, -8.7627e-01, -9.9996e-01, -9.9821e-01, -9.9999e-01, 1.9396e-01, -1.1277e-01, 9.9359e-01, -9.9153e-01, 4.4752e-02, -9.8731e-01, -9.9942e-01, -9.9982e-01, 2.9360e-02, 9.9847e-01, -9.2014e-03, 9.9999e-01, 1.7111e-01, 4.5071e-03, 9.9998e-01, 9.9467e-01, 4.9726e-03, -9.0707e-01, 6.9056e-02, -1.8141e-01, -9.8831e-01, 9.9668e-01, 4.9800e-01, 1.2997e-01, 9.9895e-01, -1.0000e+00, -9.9990e-01, 9.9478e-01, -9.9989e-01, 9.9906e-01, 9.9820e-01, 9.9990e-01, -6.8953e-01, 9.9990e-01, 9.9987e-01, 9.4563e-01, -3.7660e-01, -1.0000e+00, 1.3151e-01, -9.7371e-01, -9.9997e-01, -1.3228e-02, -2.9801e-01, -9.9985e-01, 9.9662e-01, -2.0004e-01, 9.9997e-01, 3.6876e-01, -9.9997e-01, 1.5462e-01, 1.9265e-01, 8.9871e-02, 9.9996e-01, 9.9998e-01, 1.5184e-01, -8.9714e-01, -2.1646e-01, -9.9922e-01,

...

1.7911e-02, 4.8672e-01], [4.0732e-01, 3.8137e-02, 9.6832e-03, ..., 4.4490e-02, 2.2997e-02, 4.0793e-01], [1.7047e-01, 3.6989e-02, 2.3646e-02, ..., 4.6833e-02, 2.5233e-01, 1.6721e-01]]]], grad_fn=)), cross_attentions=None) 

可以看到不使用model head,我们只能得到 last_hidden_state(编码器层最后一个隐藏状态的输出)、grad_fn(记录反向传播函数)、pooler_output(last的池化表示)、cross_attentions(表示与其他注意力头(除了自注意力头)相关的注意力权重)

last_hidden_state表示最后一个编码器层的隐藏状态,也就是最后一个层的输出。它是一个张量(tensor),形状为[batch_size, sequence_length, hidden_size],其中:

  • batch_size表示输入的批次大小,即一次处理的样本数量。
  • sequence_length表示输入序列的长度,即单词或标记的数量。
  • hidden_size表示每个隐藏状态的维度大小,也称为隐藏单元数。

对应上文,这里的1表示batch为1,也就是一个句子;然后12是token长度,也就是sequence_length,最后的768则表示每个隐藏状态的维度大小。

2.2.3 带model head的模型调用:

可以看到,在这里,我们使用的是一个AutoModelForSequenceClassification模型,模型最后的输出是一个包含logits的序列,是直接反馈给我们最后所要的结果的,模型头的结构和参数通常是针对特定任务进行设计和训练的。

注:本文转载自blog.csdn.net的笨笨sg的文章"https://blog.csdn.net/a131529/article/details/134687892"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2491) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top