我有一个(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)
我们如何将其传递给例如Chainer中的NStepGRU
链接?并例如获取所有序列(batch_size, embedding_size)
的最终隐藏状态?
答案 0 :(得分:1)
concat
接受一批序列作为元素形式为new_df = pd.concat([df1, df2[['whatever_column_you_want_to_concatenate']]], axis=1)
的列表。注意,这里不需要填充。每个元素可以有不同的长度。
如果您的张量NStepGRU
的形状为(sequence_length, embedding_size)
,并且序列的长度为x
,则可以将(batch_size, max_sequence_length, embedding_size)
传递给lengths
。
[x[i, :l] for i, l in enumerate(lengths)]
返回NStepGRU
最后一层的输出,NStepGRU
返回最终的隐藏状态。由于ys
可能包含多个图层,因此为每个图层都提供了最终的隐藏状态。即hs
的形状为NStepGRU
。如果您使用的是单层ys
,则只需提取(num_layers, batch_size, embedding_size)
即可返回形状NStepGRU
的最终隐藏状态。