Masked_Filled随机置列为零

文章目录

  • [1. softmax](#1. softmax)
  • [2. python 方法](#2. python 方法)

1. softmax

在计算损失函数的时候,我们需要将我们填充为0的地方概率置为0,以免参与损失计算,我们一般会将需要置为0的位置上面通过masked_filled函数将为True的位置置为一个非常小的值1e-9,这样经过F.softmax函数后,其值为0。这里用到两个函数,

  • 第一个是F.softmax,主要负责归一化处理,将值转换为0-1内,并且其和为1,转换成概率值。
  • 第二个是Masked_fill 函数,可以通过提供一个同等大小的BOOL矩阵,将为True的地方,填充为自己喜欢的值。
  • 第三个是填充的方式,在transformer中,我们把为0的位置的值填充为负无穷,这样经过为softmax后为零,但是transofrmer中填充的方式为在一个行向量中的末尾填充零,以行向量作为样本向量,列向量为特征向量,根据MIT麻神理工的思路,矩阵A以列向量表示更适合参数学习,所以我们希望通过随机掩码不同位置的列向量,这样通过学习样本的特征维来表示矩阵,所以我们引入一种列向量掩码方式。

2. python 方法

python 复制代码
import torch
import torch.nn as nn
import torch.nn.functional as F

torch.set_printoptions(precision=3, sci_mode=False)
torch.manual_seed(333512)

if __name__ == "__main__":
    run_code = 0
    row = 4
    column = 5
    scores = torch.randn(row, column)
    masked = torch.randint(0, 2, (1, column)).to(torch.bool)
    masked_scores = scores.masked_fill(masked, -1e9)
    scores_softmax = F.softmax(masked_scores, dim=-1)
    print(f"scores=\n{scores}")
    print(f"masked=\n{masked}")
    print(f"masked_scores=\n{masked_scores}")
    print(f"scores_softmax=\n{scores_softmax}")
  • 结果:
python 复制代码
scores=
tensor([[-0.786,  1.136,  1.624,  0.417,  1.366],
        [-0.520, -0.127, -0.219, -0.489,  0.276],
        [-0.937, -0.734,  1.221, -0.305,  1.020],
        [ 2.252, -0.042, -1.098,  1.135, -0.075]])
masked=
tensor([[False,  True,  True, False,  True]])
masked_scores=
tensor([[    -0.786, -1000000000.000, -1000000000.000,      0.417, -1000000000.000],
        [    -0.520, -1000000000.000, -1000000000.000,     -0.489, -1000000000.000],
        [    -0.937, -1000000000.000, -1000000000.000,     -0.305, -1000000000.000],
        [     2.252, -1000000000.000, -1000000000.000,      1.135, -1000000000.000]])
scores_softmax=
tensor([[0.231, 0.000, 0.000, 0.769, 0.000],
        [0.492, 0.000, 0.000, 0.508, 0.000],
        [0.347, 0.000, 0.000, 0.653, 0.000],
        [0.754, 0.000, 0.000, 0.246, 0.000]])
相关推荐
树獭非懒1 分钟前
Claude Code 完全入门指南:让你的 AI 从"会说"到"会做"
人工智能·程序员·llm
数智工坊2 分钟前
基于CLIP隐空间的层级文本条件图像生成:unCLIP核心原理与全链路解析
论文阅读·人工智能·深度学习·transformer·迁移学习
雪回4 分钟前
基于 Stable Diffusion-WebUI 实现 LandPPT 本地模型绘图配置指南(SDWebUI )
人工智能·深度学习·ai·ai作画·stable diffusion·ppt
^ V ^4 分钟前
1.1 具身智能 (Embodied AI)
人工智能·具身智能
薛定猫AI7 分钟前
【深度解析】从 AI 超级应用到数字操作系统:基于大模型 API 构建可落地的 Agent 工作流
人工智能
captain_AIouo12 分钟前
Captain AI以数据为核心,打造OZON智能决策引擎
大数据·人工智能·经验分享·aigc
ALINX技术博客16 分钟前
AMD VU FPGA+NVIDIA Thor AI 超高性能异构平台 ALINX HEA13,支撑新一代边缘 AI 系统
人工智能·fpga开发
TENSORTEC腾视科技17 分钟前
AI赋能 车行无忧|腾视科技ES10终端,为车辆装上“智慧大脑”
人工智能·科技·ai·零售·无人叉车及智能调度系统解决方案
chatexcel18 分钟前
AI PPT生成学术展演文稿实操教程:提示词设计与生成流程详解
人工智能·powerpoint
科研前沿34 分钟前
实景像素级精准复刻,夯实动态真孪生底座——原生自研技术壁垒,领航视频孪生产业发展
人工智能·音视频