#numpy #keras #modulenotfounderror
#numpy #keras #ошибка modulenotfounderror
Вопрос:
Я пытаюсь улучшить гиперпараметры моей нейронной сети keras, оптимизируя их с помощью библиотеки весов и смещений (wandb).
Вот моя конфигурация:
method: bayes
metric:
goal: maximize
name: Search elo
parameters:
batch_number:
distribution: int_uniform
max: 100
min: 1
batch_size:
distribution: int_uniform
max: 1024
min: 1
epochs:
distribution: int_uniform
max: 10
min: 1
neural_net_blocks:
distribution: int_uniform
max: 5
min: 1
num_simulations:
distribution: int_uniform
max: 800
min: 1
pb_c_base:
distribution: int_uniform
max: 25000
min: 15000
pb_c_init:
distribution: uniform
max: 3
min: 1
root_dirichlet_alpha:
distribution: uniform
max: 4
min: 0
root_exploration_fraction:
distribution: uniform
max: 1
min: 0
program: ../Main.py
Однако, когда я запускаю wandb agent arkleseisure/projectname/sweepcode
, я получаю эту ошибку, повторяющуюся каждый раз при запуске развертки.
2020-09-13 12:15:02,188 - wandb.wandb_agent - INFO - Running runs: ['klawqpqv']
2020-09-13 12:15:02,189 - wandb.wandb_agent - INFO - Cleaning up finished run: klawqpqv
2020-09-13 12:15:03,063 - wandb.wandb_agent - INFO - Agent received command: run
2020-09-13 12:15:03,063 - wandb.wandb_agent - INFO - Agent starting run with config:
batch_number: 75
batch_size: 380
epochs: 10
neural_net_blocks: 4
num_simulations: 301
pb_c_base: 17138
pb_c_init: 1.5509741790555416
root_dirichlet_alpha: 2.7032316257955133
root_exploration_fraction: 0.5768106739703028
2020-09-13 12:15:03,245 - wandb.wandb_agent - INFO - About to run command: python ../Main.py --batch_number=75 --batch_size=380 --epochs=10 --neural_net_blocks=4 --num_simulations=301 --p
b_c_base=17138 --pb_c_init=1.5509741790555416 --root_dirichlet_alpha=2.7032316257955133 --root_exploration_fraction=0.5768106739703028
Traceback (most recent call last):
File "../Main.py", line 3, in <module>
import numpy
ModuleNotFoundError: No module named 'numpy'
Проверка завершается сбоем после трех неудачных попыток, и мне стало интересно, что я делаю не так. Конечно, когда W amp; B создается для проектов машинного обучения, должна быть возможность импортировать numpy, так что я могу изменить. Мой код до этого момента просто импортирует другие файлы из моего проекта. Когда я запускаю код в обычном режиме, он не аварийно завершает работу, а выполняется совершенно нормально.
Ответ №1:
Наиболее вероятная проблема, с которой вы сталкиваетесь, заключается в том, что wandb agent
выполняется скрипт python с другим интерпретатором Python, чем вы намеревались.
Решение состоит в том, чтобы указать интерпретатор python, добавив что-то подобное в конфигурацию развертки (где python3
это интерпретатор, который вы хотите использовать):
command:
- ${env}
- python3
- ${program}
- ${args}
Эта функция задокументирована по адресу:https://docs.wandb.com/sweeps/configuration#command
И есть часто задаваемые вопросы по настройке интерпретатора Python по адресу:https://docs.wandb.com/sweeps/faq#sweep-with-custom-commands
Чтобы немного больше понять, что происходит, вы можете посмотреть на опубликованную вами строку отладки, в которой говорится: «О запуске команды:»
python ../Main.py --batch_number=75 --batch_size=380 --epochs=10 --neural_net_blocks=4 --num_simulations=301 --pb_c_base=17138 --pb_c_init=1.5509741790555416 --root_dirichlet_alpha=2.7032316257955133 --root_exploration_fraction=0.5768106739703028
По умолчанию wandb agent
используется интерпретатор Python с именем python
. Это позволяет пользователям настраивать свою среду так, чтобы python указывал на выбранный ими интерпретатор с помощью pyenv, virtualenv или других инструментов.
Если вы обычно запускаете команды с помощью командной строки python2 или python3, вы можете настроить способ выполнения агентом вашей программы, указав command
ключ в вашем файле конфигурации, как описано выше. В качестве альтернативы, если ваша программа является исполняемой, а ваш интерпретатор python находится в первой строке вашего скрипта, используя #!/usr/bin/env python3
синтаксис, вы можете установить свой массив команд равным:
command:
- ${env}
- ${program}
- ${args}
Комментарии:
1. Спасибо за ваш ответ @JeffRaubitschek, я пытался изменить интерпретатор, но в своих экспериментах я обнаружил, что команда, данная wandb, отлично работает, когда я копирую и вставляю ее и запускаю сам. Я также распечатал версию python при выполнении этого и обнаружил, что они используют точно такую же версию python. Есть просто какая-то странная причина, по которой один может получить доступ к импортированным файлам, а другой нет.