繁体   English   中英

如何将填充序列张量转换为预期的RNN格式?

[英]How to convert padded sequence tensor to expected RNN format?

我有一个张量的形状(batch_size, max_sequence_length, embedding_size) ,将其填充到最大长度以存储序列。 我也有(batch_size, max_sequence_length, vocab) ,例如:

# Batch size many, (batch_size, 4, 8)
[2,4,1,4]
[7,4,2,0]
[6,0,0,0]
# Using EmbedID(ignore_label=0) to get (batch_size, 4, embeddeding_size)

我们如何将其传递给例如NStepGRU中的NStepGRU链接? 并例如获得所有序列的最终隐藏状态(batch_size, embedding_size)

NStepGRU接受一批序列作为列表,其元素的形状为(sequence_length, embedding_size) 注意,这里不需要填充。 每个元素可以具有不同的长度。

如果您有一个张量x的形状(batch_size, max_sequence_length, embedding_size)和序列lengths ,则可以将[x[i, :l] for i, l in enumerate(lengths)] NStepGRU [x[i, :l] for i, l in enumerate(lengths)] NStepGRU [x[i, :l] for i, l in enumerate(lengths)]传递给NStepGRU

NStepGRU返回ys最后一层的输出和hs最终的隐藏状态。 由于NStepGRU可能包含多个层,因此为每个层提供了最终的隐藏状态。 ys具有形状(num_layers, batch_size, embedding_size) 如果使用单层NStepGRU ,则只需提取hs[0]返回形状的最终隐藏状态(batch_size, embedding_size)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM