Hello! I want to run a conditional or nested search space through TuneSearchCV. Here’s an example of what I’d like to do
lda_solver = tune.choice([‘svd’,‘lsqr’, ‘eigen’])
lda_shrinkiage = tune.sample_from(lambda spec: None if spec.config.classify__solver==‘svd’
else (np.random.uniform(0,1)))
lda_param_grid ={
“classify__solver”: lda_solver
, “classify__shrinkage”: lda_shrinkiage
}
tuned = TuneSearchCV(lda_pipe,
param_distributions=lda_param_grid,
n_trials=300,
scoring=“average_precision”,
max_iters=1,
search_optimization=“bayesian”,
n_jobs=-1,
refit=False,
cv= 10,
verbose=1,
#loggers = “tensorboard”,
random_state=42,
use_gpu=False
)
tuned.fit(X_train, y_train)
But I get
ValueError: SkOpt does not support parameters of type Function with samplers of type NoneType
Alternatively, it would also achieve what I want if I could set up a nested space like this:
lda_param_grid = {
‘solver’: tune.choice( [
{‘solver’:‘svd’}
,{‘solver’:‘lsqr’,‘shrinkage’:tune.choice([‘auto’, tune.uniform( 0, 1)])}
,{‘solver’:‘eigen’,‘shrinkage’:tune.choice[‘auto’, tune.uniform( 0, 1)])}
])
}