最佳实践是在每n个请求后更新到python-flask



在构建多武装土匪方法(Thompson Sampling(时,在生产中,由于参数应该在收到n个奖励后更新,我想在Flask restAPI中实现。

在我收到每100个请求后,我想使用我收到的所有奖励,然后更新我的参数,在这种情况下是alpha和beta。

batch_size = 100
ts = ThompsonSampling(batch_size, frames)
@app.route("/route1", methods=["GET"])
def run_ts():
"""When slot opens return frame to be displayed"""
theta_samples = [np.random.beta(ts.alphas[k], ts.betas[k]) 
for k in range(ts.n_actions)]
a_idx = np.argmax(theta_samples)
display = ts.actions[a_idx]
return jsonify({"best_ad":display.name,
"expected_ctr":display.ctr,
"status":"00",
"message":"success"})

每100个呼叫到"以上";路由1";我想用我得到的奖励更新(我会把它存储在一个列表中,然后传递给它(

def run(self, rewards, a_idx):
for reward in rewards:
self.update(a_idx, reward)

这样做的最佳实践是什么?我应该如何节省奖励?将奖励和动作索引保存在列表中,然后将其发送回API似乎并不高效。

您可以将计数器存储在数据库或文件中。然后在每次收到请求时增加它,读取值,如果它为100,则重置它并运行您的函数。

最新更新