pytorch 中的 keras.layers.Masking 相当于什么?

2024-04-22

我有时间序列序列,我需要通过将零填充到矩阵中并在 keras 中使用 keras.layers.Masking 来将序列的长度固定为一个数字,我可以忽略这些填充的零以进行进一步的计算,我想知道它怎么可能在 Pytorch 中完成?

要么我需要在 pytroch 中进行填充,而 pytorch 无法处理不同长度的序列,这相当于 pytorch 中 keras 的屏蔽层,或者如果 pytorch 处理不同长度的序列,怎么办?


您可以使用打包序列 https://pytorch.org/docs/master/nn.html#packedsequence类相当于 keras masking。您可以在以下位置找到更多功能torch.nn.utils.rnn

这里举个例子rnn 的可变长度序列输入的打包 https://discuss.pytorch.org/t/simple-working-example-how-to-use-packing-for-variable-length-sequence-inputs-for-rnn/2120

import torch
import torch.nn as nn
from torch.autograd import Variable

batch_size = 3
max_length = 3
hidden_size = 2
n_layers =1

# container
batch_in = torch.zeros((batch_size, 1, max_length))

#data
vec_1 = torch.FloatTensor([[1, 2, 3]])
vec_2 = torch.FloatTensor([[1, 2, 0]])
vec_3 = torch.FloatTensor([[1, 0, 0]])

batch_in[0] = vec_1
batch_in[1] = vec_2
batch_in[2] = vec_3

batch_in = Variable(batch_in)

seq_lengths = [3,2,1] # list of integers holding information about the batch size at each sequence step

# pack it
pack = torch.nn.utils.rnn.pack_padded_sequence(batch_in, seq_lengths, batch_first=True)

>>> pack
PackedSequence(data=Variable containing:
 1  2  3
 1  2  0
 1  0  0
[torch.FloatTensor of size 3x3]
, batch_sizes=[3])


# initialize
rnn = nn.RNN(max_length, hidden_size, n_layers, batch_first=True) 
h0 = Variable(torch.randn(n_layers, batch_size, hidden_size))

#forward 
out, _ = rnn(pack, h0)

# unpack
unpacked, unpacked_len = torch.nn.utils.rnn.pad_packed_sequence(out)

>>> unpacked
Variable containing:
(0 ,.,.) = 
 -0.7883 -0.7972
  0.3367 -0.6102
  0.1502 -0.4654
[torch.FloatTensor of size 1x3x2]

更多你会发现这篇文章很有用。 [跳转到标题 - “PackedSequence 对象如何工作”] -link https://medium.com/huggingface/understanding-emotions-from-keras-to-pytorch-3ccb61d5a983

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pytorch 中的 keras.layers.Masking 相当于什么? 的相关文章

随机推荐

  • java中的for循环和i的值

    在 Horstmann 的 java 教科书 Big Java Late Objects 中 对于 for 循环 例如 for i 0 i lt 5 i 霍斯特曼说 价值观i对于这个 for 循环是0 1 2 3 4 5 然而 在我看来 i
  • Angular UI Bootstrap Popover - 如何添加关闭按钮

    我有一个表格 每个单元格都有一个弹出窗口 如下例所示 对弹出窗口的调用 td td
  • 使用额外模块构建 opencv 错误 ocv_download

    我尝试使用 Extramodules 构建 openCV 如果我尝试使用 cmake 配置项目文件 Windows 10 上的 vc14 x32 则会出现错误 opencv contrib master modules xfeatures2
  • Angular 4显示当前时间

    在 Angular 4 变化检测系统中显示当前时间的正确 规范 方法是什么 问题如下 根据定义 当前时间每时每刻都在不断变化 但 Angular 4 变更检测系统无法检测到它 因此 我认为有必要明确调用ChangeDetectorRef d
  • 如何忽略 Rails 中特定操作的真实性令牌?

    当我不想检查真实性令牌的特定操作时 如何告诉 Rails 跳过检查它 轨道 5 2 您可以使用相同的skip before action https api rubyonrails org classes ActionController
  • C# OpenFileDialog 非模态可能

    是否可以创建 拥有非模式 net OpenFileDialog 我在主对话框中有一个 UI 元素 始终需要可供用户按下 No 打开文件对话框 http msdn microsoft com en us library system wind
  • 领域未获取数据

    我在使用领域时遇到问题 findAll 和 findAllAsync 不会从领域返回任何数据 我正在像这样从主线程更新领域对象 public void updatePhoto final int ticketID realm beginTr
  • 合并多列上的两个 pandas 数据框

    我有两个数据框 gt gt gt df1 Output col1 col2 col3 col4 a abc 10 str1 b abc 20 str2 c def 20 str2 d abc 30 str2 gt gt gt df2 Out
  • Spring boot 2.0.2,使用Spring数据如何从实体验证中获取消息

    我正在构建一个 Spring Boot 2 0 2 Web 服务 实体中有许多我不想为空的字段 当尝试保留具有无效字段的实体时 如何从该特定字段获取消息 例如 我有一个实体 Entity Table name users public cl
  • 嵌入资源名称

    在C 中 嵌入资源名称的默认行为是这样的
  • 重定向后执行函数 - javascript

    好的 我的页面 MyPage 上有一个简单的按钮 可以淡出当前 div fade 1 并淡入另一个 div fade 2 我现在意识到 我可能想直接从其他地方转到该页面 淡出 2 我可以通过以下方式重定向我的页面window locatio
  • NodeJS Mongoose 总是返回一个空数组

    我尝试过使用find and findOne并且两者都没有返回文件 find返回一个空数组findOne正在返回null err在这两种情况下null以及 这是我的连接 function connectToDB mongoose conne
  • 有没有一种优雅的方法可以在 Django 管理中为 M2M 字段设置 list_filter ?

    如果我有一个披萨模型和一个浇头模型 它们之间有 m2m 是否有一些快速优雅的方法可以为它们中的任何一个添加到管理列表页面 为包含特定浇头 包含的所有浇头的所有比萨饼添加列表过滤器在某个披萨里 内置的 list filter 不支持 m2m
  • 重命名 cassandra 1.2 中的键空间和列族

    如何在 cassandra 1 2 中重命名键空间和列族 我知道不再支持 cassandra cli 重命名 api 如何在 Cassandra 中重命名键空间 https stackoverflow com questions 76491
  • 谷歌地图响应式调整大小

    我试图让谷歌地图响应并调整大小 同时在窗口调整大小时保持其中心 我阅读了其他堆栈问题 例如 响应式谷歌地图 https stackoverflow com questions 15421369 responsive google map a
  • 自动缩放但仍处理 WM_DPICHANGED

    我在使用 C 编写的非常复杂的 WinForms 应用程序时遇到了一些问题 我希望应用程序在 DPI 更改时让 Windows 自动缩放 但我仍然需要挂钩 WM DPICHANGED 事件才能缩放一些自定义绘制的文本 困境是 如果我让应用程
  • 在 R 中将因子矩阵转换为二进制(指标)矩阵的最有效方法

    我可以想到几种方法来转换这种类型的矩阵 数据框 dat data frame x1 rep c a b 100 x2 rep c x y 100 head dat x1 x2 1 a x 2 b y 3 a x 4 b y 5 a x 6
  • 为 Vim 命令行创建一个映射,在插入寄存器之前转义寄存器的内容

    假设我有一个这样的文档 并且我想搜索所有出现的 URL Vim resources http example com search q vim q q http example com search q vim 我不想完整地输入它 所以我将
  • 分配后变量的值未更新

    var a 2 var b a console log b 2 a 5 console log b 2 问 为什么即使为变量 a 分配了不同的值 变量 b 的值仍为 2 console log b 回报2因为当您访问原始类型时 您直接处理它
  • pytorch 中的 keras.layers.Masking 相当于什么?

    我有时间序列序列 我需要通过将零填充到矩阵中并在 keras 中使用 keras layers Masking 来将序列的长度固定为一个数字 我可以忽略这些填充的零以进行进一步的计算 我想知道它怎么可能在 Pytorch 中完成 要么我需要