-柚子皮-
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]])
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: