关于pytorch的lstm输出的理解

之前陷入了对pytorch的lstm输出的误区,后来画图终于明白了

上图为lstm的一个简易模型,中间可能有很多层,而lstm的输出,以batch_first=True为例:(padding了)

output的形状为【batch_num,max_sequence_len,hidden_size*num_of_direction】,显示【最后一层】的【双向】的lstm输出

其中一个样本为例:【t0前向结果+t0反向结果,t1前+t1反,……,tn前+tn反】

对于前向lstm,输出是tn前;对于反向lstm,输出是t0反。要注意输出的位置。

如果只使用最终结果,要将需要的数据按位置抽出来,如果要使用每一层的数据,需要使用(h_n,c_n)那一组数据

对于h_n,只显示最后一个时刻的结果,

其输出的结构是【第一层lstm前向,第一层的反向,第二层的前向,第二层的反向,……】

注意:t0反向结果=最后一层反向,tn前向结果=最后一层前向,一定要注意对应的位置。

 

你可能感兴趣的:(关于pytorch的lstm输出的理解)