我明白这是怎么回事,我只想知道在他进入无限循环之前如何捕捉我的程序。我的代码是:
while abs(error) > 50:
if Co > To:
c = c + 0.1
else:
c = c - 0.1
##Here I recalculate Co, the function is Co = 1/b type curve
##Here I recalculate To, the function is To = e^b type curve
error = Co - To
问题是,根据问题的不同,我有时需要更精确(例如,我需要将迭代行更改为c+0.00001),因为在每个循环中,错误从低于50的值跳到超过50的值。我怎么能抓住这样一个无限循环。在
我想这是一个趋同的问题。这几天我的数学foo有点让我失望,但是如果你担心你会陷入一个无法收敛的境地,你可以在循环中添加一些计数器。在
这有点残酷,但至少解决了上吊的问题。听起来好像你不能保证这个循环会结束,因为代码/数据不断变化。如果无限循环的情况发生了,我希望看到一个错误,这样我就可以调查它。取决于你的问题领域。在
我想如果你不想继续学习的话,我想你应该停止学习。在
基本的想法是,当你看不到你的abs误差变化时,慢慢减少你对你的数值的干扰,同时保持整个过程的稳定性。如果你已经降低了你的学习率,但你仍然没有看到任何改善,你就完成了(或者至少是某种局部的最低限度)。这个方法可能会慢一点,而且计算我输入的变量有不同的方法(例如,sigErrChange),所以你得玩玩一下。还有一些其他的注意事项我想不起来了,但希望这能让大家明白我的想法。在
例如
相关问题 更多 >
编程相关推荐