如何使用批处理运行 RNN 模型,其中每行具有不同长度的文本?
Posted
技术标签:
【中文标题】如何使用批处理运行 RNN 模型,其中每行具有不同长度的文本?【英文标题】:How to use batch to run RNN model with texts that have different length in each row? 【发布时间】:2020-10-25 17:45:19 【问题描述】:我想在pytorch中使用torch.nn.utils.rnn.pack_padded_sequence
来解决这个问题,但是我不知道当torch变量在最后一维的大小不同时如何获取?
torch.nn.utils.rnn.pack_padded_sequence(input, lengths, batch_first=False, enforce_sorted=True)
input can be of size T x B x * where T is the length of the longest sequence (equal to lengths[0]), B is the batch size, and * is any number of dimensions (including 0)
pack_padded_sequence
如果我运行以下代码,我会得到错误。
x_torch = torch.from_numpy(np.ones((2, 3)))
y_torch = torch.from_numpy(np.ones((2, 5)))
ans_torch = torch.cat([x_torch, y_torch], dim = 0)
# ouput
RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 3 and 5 in dimension 1 at c:\a\w\1\s\windows\pytorch\aten\src\th\generic/THTensorMoreMath.cpp:1333
救命!
【问题讨论】:
【参考方案1】:我从这段代码中学到,在使用torch.nn.utils.rnn.pack_padded_sequence
之前,应该用零或其他任何没有意义的数字来完成火炬。
pad_packed_demo
【讨论】:
以上是关于如何使用批处理运行 RNN 模型,其中每行具有不同长度的文本?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Keras、Tensorflow 进行具有多个时间序列维度的 RNN 时间序列预测
RNN经典案例实战使用RNNLSTMGRU模型构建姓名分类器