Я обучил множество DNN и хочу использовать их в глубоком ансамбле. Код реализован в TF2, но пакет Deepstack также работает с Keras. Код выглядит примерно так:
from deepstack.base import KerasMember
from deepstack.ensemble import DirichletEnsemble
dirichletEnsemble = DirichletEnsemble(N=2000 * ensemble_size)
for net_idx in range(0,ensemble_size):
member = KerasMember(name=model_name, keras_model=model,
train_batches=(train_images,train_labels), val_batches=(valid_images, valid_labels))
dirichletEnsemble.add_member(member)
dirichletEnsemble.fit()
, где «модель» - это, по сути, модель Keras, поэтому вам нужно загружать одну модель на каждую l oop (я использую свою собственную реализацию). 'ensemble_size' представляет количество DNN, используемых в ансамбле.
В результате я получаю следующую ошибку
ValueError: multi_class должен быть в ('ovo', 'ovr ')
, который генерируется пакетом sklearn.
ДАЛЬНЕЙШИЕ ДЕТАЛИ: deepstack создает метри c
metric = metrics.roc_auc_score
и затем возвращает его как
return metric(y_t, y_p)
, который затем вызывает sklearn
if multi_class == 'raise':
raise ValueError("multi_class must be in ('ovo', 'ovr')")
В моем конкретном случае c метки имеют вид y_t
[7 10 18 52 10 13 10 4 7 7 24 26 7 26 13 13]
и y_p
[73 250 250 250 281 281 250 281 281 174 281 250 281 250 250 250]
Как установить multi_class как 'ovo' или ' ОВР?