首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >火炬中的简单RNN

火炬中的简单RNN
EN

Stack Overflow用户
提问于 2016-09-07 12:19:30
回答 1查看 523关注 0票数 1

我正试图在火炬中实现一个RNN。为了适应它,我从一个简单的任务开始,预测序列中的下一个项目。序列是{1,2,3,4,5,6,7,8,9,10}的子序列,随机选择偏移量。

我想实现一个具有LSTM信元的隐藏层的网络体系结构。这就是为什么我使用nn.SeqLSTM(输入大小,输出大小)。

代码语言:javascript
复制
rho = 5 -- number of steps for bptt
hiddensize = 15
inputsize = 1
outputsize = 1
seqlen = 5
nIndex = 10
batchsize = 4

seqlstm = nn.SeqLSTM(inputsize, outputsize)
criterion = nn.SequencerCriterion(nn.ClassNLLCriterion())


outputs = seqlstm:forward(inputs) -- inputs is seqlen x batchsize x inputsize
err = criterion:forward(outputs, targets) -- targets is seqlen x batchsize x 1
  • 我需要nn.LookupTable吗?
  • 这段代码似乎有点简单,我想是缺少了一些胶水。但是,缺少了哪些部分才能使其完整?
EN

回答 1

Stack Overflow用户

发布于 2017-02-06 15:14:53

除非这不是您的全部代码,否则会有相当多的缺失,而不仅仅是胶水。

1-对于LSTM层,输入和输出大小为1没有多大意义。

2-我不会和rho混在一起,除非你真的希望你的网络倒传5个时间步骤。

3- ClassNLLCriterion期望日志概率作为输入

4-你需要一个优化算法才能真正训练你的网络,比如SGD (参见奥普提库)。

通常,网络中至少需要一个输入层和一个输出层。输入层将将您的输入转换为嵌入,然后通过隐藏层(可能是LSTM层)转发。可以在输入层中使用LookupTable。输出层可能会使用softmax层在可能的输出上形成概率分布。

这确实有点太简单了。

nn.LookupTable是一个为输入存储嵌入的模块。例如,如果您试图预测序列中的下一个字符,那么您可以得到大小为26xinDim的LookupTable,其中对字母表中的每个字符都有一个大小为inDim的嵌入。你可能真的需要一个。

看看这个,我怀疑你可能并不完全熟悉神经网络是如何构建的。我建议你在跳槽前多熟悉一点。这里是Michael关于深度学习的一本很好的书。他非常直观地解释了一切。

查看元素示例--Research/rnn或torch/nn也非常有用。卡洛普的char-rnn也很有趣。

我希望这有什么帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39369803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档