numpy - 使用权重和偏差的扫描时无法导入模块
问题描述
我正在尝试通过使用权重和偏差库 (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,所以我可以更改什么。在那之前我的代码只是从我的项目中导入其他文件。当我正常运行代码时,它不会崩溃,而是正常执行。
解决方案
您遇到的最可能的问题是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}
推荐阅读
- r - 将 ifelse 与日期时间数据一起使用时,如何停止隐式日期转换?
- c++ - vkEnumerateDeviceExtensionProperties 抛出神秘的错误代码
- c# - Xamarin.Forms:Map.IsShowingUser 不显示当前位置?
- c# - 即使被告知显示标签也不会显示
- c# - 如何修复“JsonSerializerSettings”无法访问字段“DefaultContext”
- jsf - 通过单击表格中的按钮获取元素
- node.js - 在 Heroku 服务器上部署 Angular 应用程序时出错
- c++ - 为什么 setPosition 在某些条件下有效,但在其他条件下无效?
- html - HTML 表单 - 仅使用带有符号 ()._-' 的字母数字的输入验证
- swift - 如何保存核心数据模型 url 属性