相关疑难解决方法(0)

了解有状态LSTM

我正在阅读有关RNN/LSTM的本教程,我很难理解有状态的LSTM.我的问题如下:

1.培训批量大小

在关于RNN的Keras文档中,我发现i批次中位于样本中的样本的隐藏状态将作为输入隐藏状态提供i给下一批中的样本.这是否意味着如果我们想要将隐藏状态从样本传递到样本,我们必须使用大小为1的批次,因此执行在线梯度下降?有没有办法在批量> 1的批次中传递隐藏状态并在该批次上执行梯度下降?

2. One-Char映射问题

在教程的段落中,"一个字符到一个字符映射的状态LSTM"被给出了一个代码,该代码使用batch_size = 1stateful = True学习在给定字母表字母的情况下预测字母表的下一个字母.在代码的最后部分(第53行到完整代码的结尾),模型以随机字母('K')开始测试并预测'B'然后给出'B'它预测'C'等等除了'K'之外,它似乎运作良好.但是,我尝试了下面的代码调整(最后一部分,我保持52行及以上):

    # demonstrate a random starting point
    letter1 = "M"
    seed1 = [char_to_int[letter1]]
    x = numpy.reshape(seed, (1, len(seed), 1))
    x = x / float(len(alphabet))
    prediction = model.predict(x, verbose=0)
    index = numpy.argmax(prediction)
    print(int_to_char[seed1[0]], "->", int_to_char[index])
    letter2 = "E"
    seed2 = [char_to_int[letter2]]
    seed = seed2
    print("New start: ", letter1, letter2)
    for i in range(0, 5):
        x = numpy.reshape(seed, …
Run Code Online (Sandbox Code Playgroud)

stateful deep-learning lstm keras recurrent-neural-network

15
推荐指数
1
解决办法
5928
查看次数