我正在使用以下repo自述文件中所述的命令:
https://github.com/aminnayebi/HesBO/tree/master/BLOSSOM
即:
! python blossom_run.py Hartmann6 100 6 6 1 1
在命令行或jupyter笔记本中执行时,如上面带有“!”的一行它起作用了
但是,如果我从blossom_run.py复制代码,并给它提供相同的参数,那么经过几次迭代之后,它就会失败
import gpbo
from BLOSSOM.embd_functions import *
import numpy as np
import time
import logging
import pickle
import sys
path ='/home/XXX/HesBO/BLOSSOM/blossom_results'
test_func = 'Hartmann6'
total_itr = 99
low_dim = 6
high_dim = 6
init_n = 1
rep = job_id = 1
noise_var = s = 0
bx_size = 1
act_var = np.arange(high_dim)
high_to_low = np.random.choice(range(low_dim), high_dim)
sign = np.random.choice([-1, 1], high_dim)
f = Hartmann6(act_var, high_to_low, sign=sign, bx_size=bx_size, noise_var=noise_var)
file_name=test_func+'_blossom_d'+str(low_dim)+'_D'+str(high_dim)+'_rep_'+str(rep)+'.csv'
C=gpbo.core.config.eimledefault(f, low_dim, total_itr, s, path, file_name)
if noise_var>0:
file_name_params = 'blossom_results/param_'+ test_func +'_blossom_d'+str(low_dim)+'_D'+str(high_dim)+'_rep_'+str(rep)
pickle.dump([high_to_low, sign], open(file_name_params, 'wb'))
上面的代码写在Jupyter笔记本中,经过几次迭代后失败,并返回以下错误:
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) in ----> 1 out = gpbo.search(C)
~/.local/share/virtualenvs/HesBO-qpst6LpL/lib/python3.6/site-packages/gpbo/core/optimize.py in search(optconfig, initdata) 305 optconfig.ojfchar,optconfig.chooser,optconfig.choosepara,initdata=initdata) 306 --> 307 return O.run() 308 309
~/.local/share/virtualenvs/HesBO-qpst6LpL/lib/python3.6/site-packages/gpbo/core/optimize.py in run(self) 113 mode,self.choosepersist,chooseaux = wrap(self.choosefn,self.state,self.choosepersist,**self.choosepara) 114 self.aqpara[mode]['choosereturn']=chooseaux --> 115 x,ev,self.aqpersist[mode],aqaux = wrap(self.aqfn[mode],self.state,self.aqpersist[mode],**self.aqpara[mode]) 116 t1 = time.clock() 117 self.state.aux = aqaux
~/.local/share/virtualenvs/HesBO-qpst6LpL/lib/python3.6/site-packages/gpbo/core/optimize.py in wrap(fn, optstate, persist, **para) 267 if optstate.condition>-20: 268 logger.info('using raised noise floor {} in {}'.format(optstate.condition,fn)) --> 269 return fn(optstate,persist,**para) 270 except gpbo.core.GPdc.GPdcError as e: 271 traceback.print_exc()
gpbo/core/acquisitions.pyx in gpbo.core.acquisitions.EIMAPaq (gpbo/core/acquisitions.c:5018)()
gpbo/core/optutils.pyx in gpbo.core.optutils.twopartopt (gpbo/core/optutils.c:15787)()
gpbo/core/optutils.pyx in gpbo.core.optutils.silentdirectwrapped (gpbo/core/optutils.c:14975)()
gpbo/core/optutils.pyx in gpbo.core.optutils.silentdirect (gpbo/core/optutils.c:13317)()
TypeError: an integer is required (got type OutStream)
我还尝试将上面的相同代码放在python文件中,并在命令行中尝试python文件,因此我确信代码中没有bug,只是在Jupyter笔记本而不是终端中运行它有些奇怪
有解决办法吗
目前没有回答
相关问题 更多 >
编程相关推荐