gpt4 book ai didi

python - Keras 的 LSTM 真的考虑到了细胞状态和之前的输出吗?

转载 作者:太空宇宙 更新时间:2023-11-04 04:09:51 24 4
gpt4 key购买 nike

我在过去的一天了解了 LSTM,然后我决定看一个使用 Keras 创建它的教程。我看了几个教程,他们都有

model = Sequential()
model.add(LSTM(10, input_shape=(1,1)))
model.add(Dense(1, activation='linear'))
model.compile(loss='mse', optimizer='adam')
X,y = get_train()
model.fit(X, y, epochs=300, shuffle=False, verbose=0)

然后他们预测使用

 model.predict(X, verbose=0)

我的问题是:为了使用 LSTM 预测下一个结果,您不必给出先前的预测以及输入和细胞状态吗?另外,model.add(LSTM(10, input_shape(1,1)) 中的 10 代表什么?

最佳答案

您必须将先前的预测提供给 LSTM 状态。如果你调用 predict LSTM 每次都会被初始化,它不会记住之前预测的状态。

通常(例如,如果你用 lstm 生成文本)你有一个循环,你可以在其中做这样的事情:

# pick a random seed
start = numpy.random.randint(0, len(dataX)-1)
pattern = dataX[start]
print "Seed:"
print "\"", ''.join([int_to_char[value] for value in pattern]), "\""
# generate characters
for i in range(1000):
x = numpy.reshape(pattern, (1, len(pattern), 1))
x = x / float(n_vocab)
prediction = model.predict(x, verbose=0)
index = numpy.argmax(prediction)
result = int_to_char[index]
seq_in = [int_to_char[value] for value in pattern]
sys.stdout.write(result)
pattern.append(index)
pattern = pattern[1:len(pattern)]
print "\nDone."

(示例从 machinelearningmastery.com 复制)

重要的是这一行:

pattern.append(index)
pattern = pattern[1:len(pattern)]

在这里,他们将下一个字符附加到模式中,然后删除第一个字符以使输入长度与 lstm 的预期相匹配。然后将它带到一个 numpy 数组 (x = np.reshape(...)) 并使用生成的输出从模型中进行预测。因此,要回答您的第一个问题,您需要再次输入输出。

对于第二个问题,10 对应于一层中的 lstm 单元数。如果您不使用“return_sequences=True”,它对应于该层的输出大小。

关于python - Keras 的 LSTM 真的考虑到了细胞状态和之前的输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56520140/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com