如何解决在训练中识别序列中的触发点的同时,在LSTM中传播隐藏状态
我从here略微修改了PyTorch LSTM示例。我的目的是在连续时间序列数据上训练LSTM,以识别触发点。
基本上,我网络的输入将是浮点向量,而输出将是二进制分类(触发点-是或否)。触发是一个渐进事件,还取决于序列中的最后几个向量。因此,我需要在训练迭代中传播隐藏状态。
我的问题是-这是否是使用LSTM的正确方法?具体来说,这部分-获取LSTM单元在当前迭代中产生的隐藏状态,将其与计算图分离,然后在下一次迭代中将其再次传递给LSTM吗?我是LSTM的新手,很感谢在这方面的任何见识。
class LSTMTagger(nn.Module):
def __init__(self,embedding_dim,hidden_dim,tagset_size):
super(LSTMTagger,self).__init__()
self.hidden_dim = hidden_dim
# The LSTM takes word embeddings as inputs,and outputs hidden states
# with dimensionality hidden_dim.
self.lstm = nn.LSTM(embedding_dim,hidden_dim)
# The linear layer that maps from hidden state space to tag space
self.hidden2tag = nn.Linear(hidden_dim,tagset_size)
self.softmax = nn.LogSoftmax(dim=2)
# initialize the hidden state.
self.hidden = (torch.randn(1,1,hidden_dim),torch.randn(1,hidden_dim))
def forward(self,embeds):
lstm_out,(ht,ct) = self.lstm(embeds,self.hidden)
self.hidden = (ht.detach(),ct.detach()) # Is this correct ?
tag_space = self.hidden2tag(lstm_out)
tag_scores = self.softmax(tag_space)
return tag_scores.view(-1,2)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。