初始分析:
让我们看看文档:The yield expression is used when defining a generator function
A function which returns a generator iterator. It looks like a normal function except that it contains yield expressions for producing a series of values usable in a for-loop or that can be retrieved one at a time with the next() function.
从前面提到的代码示例可以清楚地看出,您的代码示例运行得很好,但并非如预期的那样:
train()函数yieldsagenerator,它在整个计算完成后从getError传输到您的前端。在分析的基础上改革问题:
有了上面提到的,您的问题将是获得train()过程的每个步骤的计算结果并将其显示到前端。解决方案的框架:创建一个全局变量(是的,我说了)列表。在
重构train()函数以使用上一个列表:train_errors = []
def train(network, trainset):
# [setup variables...]
while (current_error > target_error):
# [continue to train the network...]
# [update current_error...]
train_errors.append(current_error)
假设train()位于views.py文件中,重构getError()以返回train_errors列表:
^{pr2}$
我使用JsonResponse,但是可以随意使用任何适合您的东西。
通过使用javascript的^{},使您的前端每隔N秒重复一次AJAX调用,并显示与之前数据状态的差异。
使用示例:var myIntervalCall = setInterval(myAJAXcall, 500);
function myAJAXcall{
// Create your AJAX call in here
// And sufficient code to display the changes on the received data.
}
上面的代码将使myAJAXcall每0.5 sec
上面的内容可以让你对你的问题有一个初步的解决方案,你可以/必须扩展这个(野蛮的)解决方案。编辑/免责声明(由于@George和@brunodesthuilliers的评论):
以上这些,不是一个好的解决方案!!让作者“摆脱”当前的问题,帮助他继续发展,这只是一个快速的解决办法。
“解决方案”为思考过程提供了基础,考虑到手头的问题(作者目前面临的实际问题),因此提供了一个最小和初始的解决方法。在
前面提到的:不要把这个溶液当作佳能!这只是一个“跳跃式的开始”。在