在研究LSTM和RNN时,我当然会阅读非常受欢迎的Unreasonable Effectiveness of LSTMs。与该帖子中使用的库类似的库是我正在使用的torch-rnn。我正在尝试在文件的各个位上训练LSTM并输出下一位为1的概率,而不是该库中LanguageModel运行的字符。我已经搜索了该库中的LanguageModel和其他文件以及Torch文档,并且在我的搜索中没有用。所以; 我正在尝试使用torch-rnn(或类似)库将LSTM的输入更改为单个位而不是完整字符,我不知道如何完成此操作。
这似乎是来自该特定库的相关代码片段,但我无法找到有关如何修复的相关文档,并且本身就是在学习Torch。
local _, next_char = nil, nil
for t = first_t, T do
if sample == 0 then
_, next_char = scores:max(3)
next_char = next_char[{{}, {}, 1}]
else
local probs = torch.div(scores, temperature):double():exp():squeeze()
probs:div(torch.sum(probs))
next_char = torch.multinomial(probs, 1):view(1, 1)
end
sampled[{{}, {t, t}}]:copy(next_char)
scores = self:forward(next_char)
end
我已经使用该给定的库作为参考点,但也考虑了一般的火炬模块以实现我的目标。答案不必使用任何特定的库或工具,只是建议如何完成LSTM的逐位训练。