Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >pytorch: 如何优雅的将 int list 转成 one-hot形式

pytorch: 如何优雅的将 int list 转成 one-hot形式

作者头像
ke1th
发布于 2018-01-02 03:19:53
发布于 2018-01-02 03:19:53
2.5K00
代码可运行
举报
运行总次数:0
代码可运行

虽然 pytorch 已经升级到 0.2.0 了,但是,貌似依旧没有简单的 api 来帮助我们快速将 int list 转成 one-hot。那么,如何优雅的实现 one-hot 代码呢?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def one_hot(ids, out_tensor):
    """
    ids: (list, ndarray) shape:[batch_size]
    out_tensor:FloatTensor shape:[batch_size, depth]
    """
    if not isinstance(ids, (list, np.ndarray)):
        raise ValueError("ids must be 1-D list or array")
    ids = torch.LongTensor(ids).view(-1,1)
    out_tensor.zero_()
    out_tensor.scatter_(dim=1, index=ids, src=1.)
    # out_tensor.scatter_(1, ids, 1.0)

scatter_ 是什么鬼?

从 value 中拿值,然后根据 dim 和 index 给自己的相应位置填上值

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Tensor.scatter_(dim, index, src)
# index: LongTensor
# out[index[i, j], j] = value[i, j] dim=0
# out[i,index[i, j]] = value[i, j]] dim=1 
# index 的 shape 可以不和 out 的 shape 一致
# value 也可以是一个 float 值, 也可以是一个 FloatTensor 
# 如果 value 是 FloatTensor 的话,那么shape 需要和 index 保持一致

参考资料

https://discuss.pytorch.org/t/convert-int-into-one-hot-format/507/3

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Transformers 4.37 中文文档(五十四)
REALM 模型是由 Kelvin Guu、Kenton Lee、Zora Tung、Panupong Pasupat 和 Ming-Wei Chang 在REALM: Retrieval-Augmented Language Model Pre-Training中提出的。这是一个检索增强语言模型,首先从文本知识语料库中检索文档,然后利用检索到的文档来处理问答任务。
ApacheCN_飞龙
2024/06/26
3280
Transformers 4.37 中文文档(六十三)
XLM-RoBERTa-XL 模型是由 Naman Goyal、Jingfei Du、Myle Ott、Giri Anantharaman、Alexis Conneau 在用于多语言掩码语言建模的更大规模 Transformer中提出的。
ApacheCN_飞龙
2024/06/26
3910
Transformers 4.37 中文文档(五十七)
RoCBert 模型是由 HuiSu、WeiweiShi、XiaoyuShen、XiaoZhou、TuoJi、JiaruiFang、JieZhou 在 RoCBert: Robust Chinese Bert with Multimodal Contrastive Pretraining 中提出的。它是一个经过预训练的中文语言模型,在各种形式的对抗攻击下具有鲁棒性。
ApacheCN_飞龙
2024/06/26
3230
Transformers 4.37 中文文档(三十六)
我们介绍了 GPT-NeoX-20B,这是一个拥有 200 亿参数的自回归语言模型,经过 Pile 训练,其权重将通过宽松许可证免费向公众开放。据我们所知,这是在提交时具有公开可用权重的最大稠密自回归模型。在这项工作中,我们描述了 GPT-NeoX-20B 的架构和训练,并评估了其在一系列语言理解、数学和基于知识的任务上的性能。我们发现,GPT-NeoX-20B 是一个特别强大的少样本推理器,在进行五次评估时性能提升明显,而与大小相似的 GPT-3 和 FairSeq 模型相比。我们开源了训练和评估代码,以及模型权重,链接为 github.com/EleutherAI/gpt-neox。
ApacheCN_飞龙
2024/06/26
4910
Transformers 4.37 中文文档(三十六)
Transformers 4.37 中文文档(三十三)4-37-中文文档-三十三-
FLAN-T5 发布在论文扩展指令微调语言模型中 - 这是 T5 的增强版本,已在多种任务中进行微调。
ApacheCN_飞龙
2024/06/26
4370
Transformers 4.37 中文文档(六十一)
X-MOD 模型是由 Jonas Pfeiffer、Naman Goyal、Xi Lin、Xian Li、James Cross、Sebastian Riedel 和 Mikel Artetxe 在Lifting the Curse of Multilinguality by Pre-training Modular Transformers中提出的。X-MOD 扩展了多语言掩码语言模型,如 XLM-R,在预训练期间包含特定于语言的模块化组件(语言适配器)。在微调中,每个 Transformer 层中的语言适配器被冻结。
ApacheCN_飞龙
2024/06/26
4040
Transformers 4.37 中文文档(二十二)
BARThez 模型是由 Moussa Kamal Eddine、Antoine J.-P. Tixier 和 Michalis Vazirgiannis 于 2020 年 10 月 23 日提出的BARThez: a Skilled Pretrained French Sequence-to-Sequence Model。
ApacheCN_飞龙
2024/06/26
3330
Transformers 4.37 中文文档(三十二)
本页面提供了 Meta AI 基础人工智能研究团队的 Transformer 蛋白质语言模型的代码和预训练权重,提供了最先进的 ESMFold 和 ESM-2,以及之前发布的 ESM-1b 和 ESM-1v。Transformer 蛋白质语言模型是由 Alexander Rives、Joshua Meier、Tom Sercu、Siddharth Goyal、Zeming Lin、Jason Liu、Demi Guo、Myle Ott、C. Lawrence Zitnick、Jerry Ma 和 Rob Fergus 在论文Biological structure and function emerge from scaling unsupervised learning to 250 million protein sequences中引入的。该论文的第一个版本于 2019 年预印。
ApacheCN_飞龙
2024/06/26
7580
Transformers 4.37 中文文档(三十二)
Transformers 4.37 中文文档(三十四)
FNet 模型由 James Lee-Thorp, Joshua Ainslie, Ilya Eckstein, Santiago Ontanon 在 FNet: Mixing Tokens with Fourier Transforms 中提出。该模型用傅立叶变换替换了 BERT 模型中的自注意力层,仅返回变换的实部。该模型比 BERT 模型快得多,因为它具有更少的参数并且更节省内存。该模型在 GLUE 基准测试中达到了约 92-97% 的准确率,并且比 BERT 模型训练速度更快。论文的摘要如下:
ApacheCN_飞龙
2024/06/26
4180
Transformers 4.37 中文文档(二十六)
如果您在运行此模型时遇到任何问题,请重新安装支持此模型的最后一个版本:v4.30.0。您可以通过运行以下命令来执行:pip install -U transformers==4.30.0。
ApacheCN_飞龙
2024/06/26
4710
PyTorch入门笔记-手写数字实战01
对 MNIST 手写数字识别进行分类大致分为四个步骤,这四个步骤也是训练大多数深度学习模型的基本步骤:
触摸壹缕阳光
2020/11/05
1.1K0
PyTorch入门笔记-手写数字实战01
Transformers 4.37 中文文档(二十九)
DeBERTa 模型是由 Pengcheng He、Xiaodong Liu、Jianfeng Gao、Weizhu Chen 在DeBERTa: Decoding-enhanced BERT with Disentangled Attention中提出的,它基于 2018 年发布的 Google 的 BERT 模型和 2019 年发布的 Facebook 的 RoBERTa 模型。
ApacheCN_飞龙
2024/06/26
5790
Transformers 4.37 中文文档(五十五)
如果您在运行此模型时遇到任何问题,请重新安装支持此模型的最后一个版本:v4.30.0。您可以通过运行以下命令来执行:pip install -U transformers==4.30.0。
ApacheCN_飞龙
2024/06/26
3750
Transformers 4.37 中文文档(八十八)
LayoutLM 模型是由 Yiheng Xu,Minghao Li,Lei Cui,Shaohan Huang,Furu Wei 和 Ming Zhou 在论文LayoutLM: Pre-training of Text and Layout for Document Image Understanding中提出的。这是一种简单但有效的文本和布局预训练方法,用于文档图像理解和信息提取任务,如表单理解和收据理解。它在几个下游任务上取得了最先进的结果:
ApacheCN_飞龙
2024/06/26
4760
Transformers 4.37 中文文档(五十六)
RoBERTa-PreLayerNorm 模型由 Myle Ott, Sergey Edunov, Alexei Baevski, Angela Fan, Sam Gross, Nathan Ng, David Grangier, Michael Auli 在 fairseq: A Fast, Extensible Toolkit for Sequence Modeling 中提出。它与在 fairseq 中使用 --encoder-normalize-before 标志相同。
ApacheCN_飞龙
2024/06/26
2160
Transformers 4.37 中文文档(三十七)
OpenAI GPT-2 模型是由 Alec Radford、Jeffrey Wu、Rewon Child、David Luan、Dario Amodei 和 Ilya Sutskever 在 OpenAI 提出的,它是一个因果(单向)变压器,使用语言建模在一个大约 40GB 的文本数据语料库上进行预训练。
ApacheCN_飞龙
2024/06/26
1850
Transformers 4.37 中文文档(三十一)
EncoderDecoderModel 可以用于初始化一个序列到序列模型,其中预训练的自编码模型作为编码器,预训练的自回归模型作为解码器。
ApacheCN_飞龙
2024/06/26
3560
Transformers 4.37 中文文档(二十)
特征提取器负责为音频或视觉模型准备输入特征。这包括从序列中提取特征,例如,对音频文件进行预处理以生成 Log-Mel Spectrogram 特征,从图像中提取特征,例如,裁剪图像文件,但也包括填充、归一化和转换为 NumPy、PyTorch 和 TensorFlow 张量。
ApacheCN_飞龙
2024/06/26
5820
Transformers 4.37 中文文档(六十二)
**免责声明:**如果您看到异常情况,请提交GitHub 问题并指定@patrickvonplaten
ApacheCN_飞龙
2024/06/26
3310
Transformers 4.37 中文文档(九十四)
SpeechEncoderDecoderModel 可用于使用任何预训练语音自编码模型作为编码器(例如 Wav2Vec2,Hubert)和任何预训练自回归模型作为解码器初始化语音到文本模型。
ApacheCN_飞龙
2024/06/26
3810
Transformers 4.37 中文文档(九十四)
相关推荐
Transformers 4.37 中文文档(五十四)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档