pytorch笔记nn.functional.one_hot & 衍生(有一个padding对应的全零向量)

 1 nn.functional.one_hot 

torch.nn.functional.one_hot(tensor, num_classes=-1) 

接收一个包含索引值的 LongTensor,形状为(),并返回一个形状为(, num_classes)的张量,该张量在所有位置都是零,除了在输入张量对应值的索引位置处为1。

tensor (LongTensor) – 任何形状的类别值
num_classes

(int) – 总类别数。如果设置为-1,则类别数将被推断为输入张量中最大类别值加一。

num_classes必须比tensor中出现的数字多,否则会报错

import torch.nn.functional as F

x=torch.arange(5)

F.one_hot(x)
'''
tensor([[1, 0, 0, 0, 0],
        [0, 1, 0, 0, 0],
        [0, 0, 1, 0, 0],
        [0, 0, 0, 1, 0],
        [0, 0, 0, 0, 1]])
'''

2 扩展

以上面的张量为例,现在我希望0~4中,0~4还是one-hot,5是全0。

def custom_one_hot(indices, num_classes):
    one_hot = torch.zeros(indices.size() + torch.Size([num_classes - 1]), dtype=torch.int32)
    #这一步创建一个全零的张量,其形状是输入indices的形状加上一个额外的维度
    #这个额外维度的大小是num_classes - 1
    
    # 将对应位置设置为1
    mask = indices < (num_classes - 1)
    #创建一个掩码(mask),这个掩码表示所有indices中的值小于num_classes - 1的位置'
    #False的位置即padding的位置,也即全0
    one_hot[mask, indices[mask]] = 1
    #每一个非padding的元素(值为indices[mask]),对应的indices[mask]位为1,其他位为0
    
    return one_hot
custom_one_hot(x,4)

'''
tensor([[1, 0, 0],
        [0, 1, 0],
        [0, 0, 1],
        [0, 0, 0],
        [0, 0, 0]], dtype=torch.int32)
'''

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-25 20:14:10       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-25 20:14:10       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-25 20:14:10       87 阅读
  4. Python语言-面向对象

    2024-05-25 20:14:10       96 阅读

热门阅读

  1. 一分钟学习LRU和LFU

    2024-05-25 20:14:10       28 阅读
  2. jeb调试发现只能找到sh和ps两个进程

    2024-05-25 20:14:10       30 阅读
  3. uniapp实现下拉过滤查询列表

    2024-05-25 20:14:10       29 阅读
  4. 邦芒面试:面试礼仪细节大揭秘

    2024-05-25 20:14:10       32 阅读
  5. Bitmap 的基本原理

    2024-05-25 20:14:10       31 阅读
  6. 共享内存bug

    2024-05-25 20:14:10       30 阅读
  7. leensa邀请码

    2024-05-25 20:14:10       34 阅读
  8. es索引同步

    2024-05-25 20:14:10       29 阅读
  9. Hadoop 再探讨

    2024-05-25 20:14:10       27 阅读
  10. Django rest_framework 基础应用

    2024-05-25 20:14:10       29 阅读
  11. P2P 技术:点对点网络的兴起

    2024-05-25 20:14:10       29 阅读