所以我试图使用scipy.optimize,minimize在本地最小化一个复杂的函数。由于我需要良好的渐变度才能顺利执行局部优化,但是由于要手动编写导数,函数非常复杂,因此我决定使用Autoptim作为中间人使用自动微分程序包Autograd处理我的优化,以获得梯度。
安装软件包(以及Autograd)后,我打开了python终端,以运行一些初步测试,以检查scipy,autograd和autoptim之间的安装和软件包集成是否顺利进行。然后,Autoptim会在导入后立即引发错误(在import autoptim
行)。由于解释器给出了所提出的全部异常,因此我进入了更深的层次,看看是哪条线启动了停止解释器的级联。
我发现的行是autoptim.py的第88行:
87. optim_vars = _convert_to_tuple(optim_vars)
88. precon_optim_vars = precon_fwd(*optim_vars,*args)
89. n_args = len(args)
Python解释器引发了无效的语法异常,这意味着该行中的某些内容未“用Python”编写。我检查是否有一些未封闭的括号,事实并非如此。我使用的是Python3,因此我发现该行上的某些内容是使用Python2语法编写的,并且对于Python3解释器注册有误,但是据我了解,这两个版本之间的差异很小,并且有些差异(尽管不完整)两者之间具有逆向兼容性。
那有什么用呢?我在这里想念什么?
该行有什么问题?
这是python解释器中导入行的回溯
>>> import autoptim
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/local/lib/python3.4/dist-packages/autoptim/__init__.py", line 6, in <module>
from .autoptim import minimize # noqa
File "/usr/local/lib/python3.4/dist-packages/autoptim/autoptim.py", line 95
return objective_function(*optim_vars, *args)
^
SyntaxError: invalid syntax
答案 0 :(得分:-1)
要使用的语法直到Python 3.5才引入(请参见PEP 448)。您正在使用Python 3.4。
作为一种解决方法,您可以显式构建所需的列表以进行解压缩:
return objective_function(*list(optim_vars + args))