Ошибка в python синтаксис звездочки. Понятия не имею, что не так - PullRequest
0 голосов
/ 16 марта 2020

Итак, я пытаюсь локально минимизировать сложную функцию, используя scipy.optimize, минимизировать. Так как мне требуются хорошие градиенты для того, чтобы локальная оптимизация выполнялась плавно, но функция очень сложна для того, чтобы производные можно было писать вручную, я решил использовать Autoptim в качестве среднего значения. человек, чтобы справиться с моей оптимизацией, используя пакет дифференциации automati c Autograd для получения градиентов.

После того, как я установил пакет (а также Autograd), я открыл свой терминал python чтобы выполнить несколько предварительных тестов, чтобы проверить, прошла ли установка и интеграция пакетов между scipy, autograd и autoptim. Затем Autoptim сразу после импорта выдает ошибку (в строке import autoptim). Поскольку интерпретатор дает полный стек поднятых исключений, я перешел на более глубокие уровни, чтобы посмотреть, какая линия инициировала каскад, который остановил интерпретатор.

Строка, которую я нашел, была строкой 88 файла autoptim.py:

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, но, насколько я понимаю, различия между двумя версиями довольно малы, и есть некоторая (хотя и не полная) ретро-совместимость между ними.

Так что же дает? Что мне здесь не хватает?

Что не так с этой строкой?

РЕДАКТИРОВАТЬ 1

Вот обратная трассировка строки импорта в интерпретаторе 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

1 Ответ

0 голосов
/ 16 марта 2020

Используемый синтаксис не был введен до Python 3,5 (см. PEP 448 ). Вы используете Python 3.4.

. В качестве обходного пути вы можете явно создать необходимый список для распаковки:

return objective_function(*list(optim_vars + args))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...