【发布时间】:2020-06-09 15:39:13
【问题描述】:
我训练了一组 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 模型,因此您需要在每个循环中加载一个模型(我正在使用自己的实现)。 'ensemble_size' 表示集成中使用的 DNN 数量。
结果出现以下错误
ValueError: multi_class must be in ('ovo', 'ovr')
由 sklearn 包生成。
更多细节:deepstack 创建一个指标
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')")
在我的具体情况下,标签分别是 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' 或 'ovr'?
【问题讨论】:
标签: scikit-learn deep-learning tensorflow2.0 ensemble-learning