- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在阅读了几篇文章后,我仍然对我从 BiLSTM 获取最后隐藏状态的实现的正确性感到困惑。
# pos contains indices of words in embedding matrix
# seqlengths contains info about sequence lengths
# so for instance, if batch_size is 2 and pos=[4,6,9,3,1] and
# seqlengths contains [3,2], we have batch with samples
# of variable length [4,6,9] and [3,1]
all_in_embs = self.in_embeddings(pos)
in_emb_seqs = pack_sequence(torch.split(all_in_embs, seqlengths, dim=0))
output,lasthidden = self.rnn(in_emb_seqs)
if not self.data_processor.use_gru:
lasthidden = lasthidden[0]
# u_emb_batch has shape batch_size x embedding_dimension
# sum last state from forward and backward direction
u_emb_batch = lasthidden[-1,:,:] + lasthidden[-2,:,:]
最佳答案
在一般情况下,如果您想创建自己的 BiLSTM 网络,您需要创建两个常规 LSTM,并使用常规输入序列馈送一个,另一个使用反向输入序列馈送。在完成两个序列的输入后,您只需从两个网络中获取最后一个状态并以某种方式将它们联系在一起(求和或连接)。
据我了解,您正在使用 this example 中的内置 BiLSTM(在 nn.LSTM 构造函数中设置 bidirectional=True
)。然后您在输入批次后获得连接的输出,因为 PyTorch 会为您处理所有麻烦。
如果是这种情况,并且您想对隐藏状态求和,那么您必须
u_emb_batch = (lasthidden[0, :, :] + lasthidden[1, :, :])
h_n of shape (num_layers * num_directions, batch, hidden_size): tensor containing the hidden state for t = seq_len
u_emb_batch_2 = output[-1, :, :HIDDEN_DIM] + output[-1, :, HIDDEN_DIM:]
关于python - 从 PyTorch 中的 BiLSTM (BiGRU) 获取最后一个状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50856936/
我正在做一个项目,我必须将 CNN 的输出传递给双向 LSTM。我创建了如下模型,但它抛出了“不兼容”错误。请让我知道我哪里出错了以及如何解决这个问题 model = Sequential()
在阅读了几篇文章后,我仍然对我从 BiLSTM 获取最后隐藏状态的实现的正确性感到困惑。 Understanding Bidirectional RNN in PyTorch (TowardsData
我在将 Bert 嵌入层集成到 BiLSTM 模型中以进行词义消歧任务时遇到问题, Windows 10 Python 3.6.4 TenorFlow 1.12 Keras 2.2.4 No virt
我是一名优秀的程序员,十分优秀!