gpt4 book ai didi

Python 如何创建可更新的图?

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:39:27 24 4
gpt4 key购买 nike

我不确定这是正确的问题或措辞,所以请随时提出修改建议!

现在,我的问题是:假设我们有一个算法,一个长时间运行的算法,比如训练一个像神经网络这样的机器学习模型,所以代码看起来像这样:

for training_iteration in range(training_iterations_num):
model.train()

现在,我想在每次评估后绘制训练结果,因此理论上代码应该变成这样:

for training_iteration in range(training_iterations_num):
model.train()
score = model.evaluate()
plot.add_point_to_plot(x=training_iteration, y=score)

这是一个长期运行的算法,将运行更长的时间,整夜甚至几天,所以我们需要一种可行的方法来观察它的演变。

据我所知,Matplotlib 没有提供一种方便的方法来做到这一点。当然它有用于动画等的 API,但这不是我需要的。这是一个循环,其中训练方法占用了 90-99% 的 CPU 时间,并且无法知道一轮训练需要多长时间,无论后台的一堆线性代数需要多长时间拿。

我需要一些方法来绘制算法在执行过程中的演化过程。该过程的主线程显然会忙于进行计算,因此它不应该像 GUI 通常在您占用线程时那样给我“不响应”,并且它应该支持轻松地将数据添加到现有图形/线条以显示演变的算法。

最佳答案

考虑使用 threading module .这将允许您做的是让训练在一个线程中运行,而情节在另一个线程中运行。要将训练模型中的数据发送到图中,您可以使用 queue .总之,代码看起来像这样:

模型线程:

for training_iteration in range(training_iterations_num):
model.train()
score = model.evaluate()
data_queue.put(score)

情节线索:

while(true):
if not data_queue.empty():
plot_data.append(data_queue.get())
plot.display(plot_data)

然后您可以根据需要使用绘图线程更新绘图。

关于Python 如何创建可更新的图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53301942/

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