it-swarm.com.ru

Как исправить ipykernel_launcher.py: error: нераспознанные аргументы в jupyter?

Я следую этому тензорному потоку учебник после двух дней настройки среды я наконец смог запустить premade_estimator.py с помощью cmd

 

но когда я пытаюсь запустить тот же код в ноутбуке Jupyter, я получаю эту ошибку:

usage: ipykernel_launcher.py [-h] [--batch_size BATCH_SIZE]
                             [--train_steps TRAIN_STEPS]

ipykernel_launcher.py: error: unrecognized arguments: -f C:\Users\david\AppData\Roaming\jupyter\runtime\kernel-4faecb24-6e87-40b4-bf15-5d24520d7130.json

Возникла исключительная ситуация, используйте% tb для просмотра полной трассировки.

SystemExit: 2

C:\Anaconda3\envs\python3x\lib\site-packages\IPython\core\interactiveshell.py:2918: 
UserWarning: To exit: use 'exit', 'quit', or Ctrl-D. warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)

Я попытался исправить это без успеха, используя:

pip install --ignore-installed --upgrade jupyter

pip install ipykernel
python -m ipykernel install

conda install notebook ipykernel
ipython kernelspec install-self

Любая идея будет оценена! Спасибо!

2
virtualdvid

Я понял! причина, по которой мы получаем ошибку, состоит в том, что этот код использует argparse и этот модуль используется для написания дружественных интерфейсов командной строки, поэтому, похоже, он конфликтует с Jupyter Notebook.

Я нашел решение в этой странице :

Что нам нужно сделать, это:

Удалите или прокомментируйте эти строки:

parser = argparse.ArgumentParser()
parser.add_argument('--batch_size', default=100, type=int, help='batch size')
parser.add_argument('--train_steps', default=1000, type=int,
                    help='number of training steps')

и заменить args

args = parser.parse_args(argv[1:])

для словаря, использующего библиотеку easydict таким образом:

args = easydict.EasyDict({
    "batch_size": 100,
    "train_steps": 1000
})

С easydict мы можем получить доступ к значениям dict в качестве атрибутов для аргументов.

Обновление

После всего этого года, углубившись в python, я обнаружил, что решение этого вопроса гораздо проще (нам не нужно использовать какую-либо внешнюю библиотеку или метод). argparse - это только один из многих способов передачи аргументов скрипту на python из терминала. Когда я попытался сделать это в тетради Jupyter, очевидно, что это не сработало. Мы можем просто заменить в функции такие параметры, как:

funtion(batch_size=100, train_steps=1000)

Теперь, если у нас есть длинный список параметров для нашей функции, мы можем использовать *args или **kargs.

*args передает Tuple в качестве параметров в функцию, для этого случая, в частности, это будет:

args = (100, 1000)
function(*args)

**kargs передает словарь в качестве аргументов нашей функции:

args = {"batch_size": 100,
        "train_steps": 1000}
function(**args)

просто Google, и вы найдете действительно хорошее объяснение о том, как использовать их оба, здесь один документация , который я использовал для изучения этого.

9
virtualdvid

Ты пытался :

conda install ipykernel --name Python3
python -m ipykernel install
0
An0n