PyTorch:tensor-数据处理

Posted -柚子皮-

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyTorch:tensor-数据处理相关的知识,希望对你有一定的参考价值。

-柚子皮-

函数functional.one_hot

自动检测类别个数

import torch.nn.functional as F
import torch

tensor =  torch.arange(0, 5) % 3  # tensor([0, 1, 2, 0, 1])
one_hot = F.one_hot(tensor)

# 输出:
# tensor([[1, 0, 0],
#         [0, 1, 0],
#         [0, 0, 1],
#         [1, 0, 0],
#         [0, 1, 0]])

F.one_hot会自动检测不同类别个数,生成对应独热编码。

指定类别数

tensor =  torch.arange(0, 5) % 3  # tensor([0, 1, 2, 0, 1])
one_hot = F.one_hot(tensor, num_classes=5)

# 输出:
# tensor([[1, 0, 0, 0, 0],
#         [0, 1, 0, 0, 0],
#         [0, 0, 1, 0, 0],
#         [1, 0, 0, 0, 0],
#         [0, 1, 0, 0, 0]])

 

填充句子到相同长度pad_sequence

torch.nn.utils.rnn.pad_sequence(sequences, batch_first=False, padding_value=0.0)

用padding_value 填充一系列可变长度的tensor,把它们填充到等长

示例1:

>>> from torch.nn.utils.rnn import pad_sequence
>>> a = torch.ones(25, 300)
>>> b = torch.ones(22, 300)
>>> c = torch.ones(15, 300)
>>> pad_sequence([a, b, c]).size()
torch.Size([25, 3, 300])

示例2:

from torch.nn.utils.rnn import pad_sequence
import torch
a=torch.randn(3)
b=torch.randn(5)
c=torch.randn(7)
>>> a
tensor([ 0.7160,  1.2006, -1.8447])
>>> b
tensor([ 0.3941,  0.3839,  0.1166, -0.7221,  1.8661])
>>> c
tensor([-0.6521,  0.0681,  0.6626, -0.3679, -0.6042,  1.6951,  0.4937])
>>> pad_sequence([a,b,c],batch_first=True,padding_value=1)
tensor([[ 0.7160,  1.2006, -1.8447,  1.0000,  1.0000,  1.0000,  1.0000],
        [ 0.3941,  0.3839,  0.1166, -0.7221,  1.8661,  1.0000,  1.0000],
        [-0.6521,  0.0681,  0.6626, -0.3679, -0.6042,  1.6951,  0.4937]])

[pad_sequence —— 填充句子到相同长度]

from: -柚子皮-

ref: 

 

以上是关于PyTorch:tensor-数据处理的主要内容,如果未能解决你的问题,请参考以下文章

PyTorch:tensor-数学API

PyTorch:tensor-基本操作

PyTorch:tensor-张量维度操作(拼接维度扩展压缩转置重复……)

Pytorch tensor 切分方法

pytorch创建tensor数据

pytorch创建tensor数据