I am trying to train a few shot text classifier using SetFit and Optuna. When I run my code, I get the error TypeError: ‘numpy.bool_’ object is not iterable when working with SetFit and Optuna.
I don’t understand where the error comes from, as I am not using numpy at all.
Here’s my code:
transformer_model = 'sentence-transformers/all-mpnet-base-v2'
def make_model(params = None):
multi_target_strategy = params['multi_target_strategy'] if params else 'one-vs-rest'
return SetFitModel.from_pretrained(transformer_model, multi_target_strategy = multi_target_strategy)
args = TrainingArguments(
loss = CosineSimilarityLoss,
batch_size=32,
num_epochs=2,
num_iterations = 5,
end_to_end=True
)
model_training = Trainer( # issues with Trainer
model_init = make_model,
args = args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
metric='accuracy',
#sampling_strategy = 'undersampling',
column_mapping={'text': 'text', 'label': 'label'}
)
def hyperparameter_search_space(trial: Trial):
learning_rate = trial.suggest_float('learning_rate', 1e-5, 1e-3, log=True)
batch_size = trial.suggest_int('batch_size', 4, 32)
multi_target_strategy = trial.suggest_categorical('multi_target_strategy', ['one-vs-rest', 'classifier-chain']) #'multi_output',
print(f"Hyperparameters: learning_rate={learning_rate}, batch_size={batch_size}, multi_target_strategy={multi_target_strategy}")
return {
'learning_rate': learning_rate,
'batch_size': batch_size,
'multi_target_strategy': multi_target_strategy
}
optimised_model = model_training.hyperparameter_search(hyperparameter_search_space, n_trials= 3)`