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

标签 keras deep-learning pytorch

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

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

最佳答案

您可以使用 PackedSequence类等同于 keras 屏蔽。您可以在 torch.nn.utils.rnn 找到更多功能

这里放的例子来自 packing for variable-length sequence inputs for rnn

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

关于keras - pytorch 中的 keras.layers.Masking 相当于什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59545229/

相关文章:

python - 如果我尝试拟合 pandas 数据框中的数据,如何将 input_shape 提供给卷积神经网络?

tensorflow - 直接导入 Keras 还是通过 TensorFlow?我应该卸载其中一个吗?

deep-learning - 索引错误 : index_select(): Index is supposed to be a vector

python - 无法弄清楚 pytorch 代码中的就地操作?

pytorch - src_mask 和 src_key_padding_mask 的区别

neural-network - 如何在 PyTorch 中仅在某些时候忽略损失

machine-learning - Keras CNN 参数太少

python - 如何从 Keras 中的 fit_generator() 获取预测?

python - Keras:训练时出现值错误

machine-learning - Caffe 在二元分类基准数据集上表示负例的方法