我有一个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)]
答案 0 :(得分:0)
您可以创建一个后台进程(multiprocessing.Process f.e)在后台执行所有迭代。预测完成后,可以将其存储在变量或数据库中。
在运行后台进程时,您可以定期获取返回结果或正在计算结果的信息的应用程序路由。