我有一个flask应用程序,它应该对用户输入进行预测,在它接受输入后,它使用预加载的字符级lstm模型来生成1000个字符。我所做的是迭代1000次,并使用预加载的模型预测每一个输入,然后将预测映射到一个字符串中。
问题是这个过程花费的时间超过30秒,因此heroku给了我一个超时错误,有什么方法可以解决这个问题吗?我读过关于后台进程的文章,但是在做出预测之前,页面不能继续前进,所以我不确定在这里要做什么。我将在下面提供我用来进行预测的代码
pattern = []
for char in input_words:
try:
pattern.append(self.char_to_int[char])
except:
pattern.append(0)
output = ''
#print(pattern)
start = time.time()
for i in range(1000):
x = np.reshape(pattern, (1, len(pattern), 1))
x = x / float(n_vocab)
prediction = m.predict(x, verbose=0)
m._make_predict_function()
index = sample(prediction)
result = int_to_char[index]
output = output+result
pattern.append(index)
pattern = pattern[1:len(pattern)]
pattern.append(index)
pattern = pattern[1:len(pattern)]发布于 2019-06-19 00:35:48
您可以创建一个在后台执行所有迭代的后台进程(multiprocessing.Process f.e)。预测完成后,您可以将其存储在变量或数据库中。
在后台进程运行时,您可以定期获取返回结果或正在计算结果的信息的应用程序的路由。
https://stackoverflow.com/questions/56650837
复制相似问题