Блокнот Jupyter не работает для кода, который работает в командной строке - PullRequest
0 голосов
/ 24 сентября 2019

Я использую команду, как описано в readme нижеприведенного репо:

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 (последний вызов последний) в ----> 1 out = gpbo.search (C)

~ / .local / share / virtualenvs / HesBO-qpst6LpL / lib / python3.6 / site-packages / gpbo / core / optimize.py в поиске (optconfig, initdata) 305 optconfig.ojfchar, optconfig.chooser, optconfig.choosepara, initdata = initdata) 306 -> 307 возвращают O.run () 308 309

~ / .local /share / virtualenvs / HesBO-qpst6LpL / lib / python3.6 / site-packages / gpbo / core / optimize.py в режиме run (self) 113, 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 в оболочке (fn, optstate, persist, ** para) 267 если optstate.condition> -20: 268 регистратор.info ('использование повышенного минимального уровня шума {} в {}'. format (optstate.condition, fn)) -> 269 return fn (optstate, persist, ** para) 270 за исключением gpbo.core.GPdc.GPdcError как e:271 traceback.print_exc ()

gpbo / core / acquisitions.pyx в gpbo.core.acquisitions.EIMAPaq (gpbo / core / acquisitions.c: 5018) ()

gpbo / core /optutils.pyx в gpbo.core.optutils.twopartopt (gpbo / core / optutils.c: 15787) ()

gpbo / core / optutils.pyx в gpbo.core.optutils.silentdirectwrapped (gpbo / core /)optutils.c: 14975) ()

gpbo / core / optutils.pyx в gpbo.core.optutils.silentdirect (gpbo / core / optutils.c: 13317) ()

Тип Ошибка:требуется целое число (получил тип OutStream)

Я пытался также пуСоздайте тот же точный код сверху в файле python и попробуйте файл python в командной строке, где он там работает, так что я уверен, что в коде нет ошибки, и есть только что-то странное в запуске его в Jupyter Notebook вместо терминала

Есть ли решение по этому поводу?

...