首页 > 解决方案 > 使用权重和偏差的扫描时无法导入模块

问题描述

我正在尝试通过使用权重和偏差库 (wandb)优化我的 keras 神经网络超参数。

这是我的配置:

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&B 用于机器学习项目时,必须可以导入 numpy,所以我可以更改什么。在那之前我的代码只是从我的项目中导入其他文件。当我正常运行代码时,它不会崩溃,而是正常执行。

标签: numpykerasmodulenotfounderror

解决方案


您遇到的最可能的问题是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 通过使用 pyenv、virtualenv 或其他工具指向他们选择的解释器。

command如果您通常使用命令行 python2 或 python3 运行命令,则可以通过如上所述在配置文件中指定密钥来自定义代理如何执行您的程序。或者,如果您的程序是可执行的,并且您的 python 解释器使用语法位于脚本的第一行#!/usr/bin/env python3,您可以将命令数组设置为:

command:
  - ${env}
  - ${program}
  - ${args}

推荐阅读