我不确定如何解释 Keras 在以下情况下的默认行为:
我的 Y(基本事实)是使用 scikit-learn 设置的MultilabelBinarizer
().
因此,举一个随机的例子,我的一排y
列是 one-hot 编码的,如下所示:[0,0,0,1,0,1,0,0,0,0,1]
.
所以我有 11 类可以预测,并且不止一类可以是真实的;因此问题的多标签性质。该特定样本有三个标签。
我像处理非多标签问题(一切照常)一样训练模型,并且没有收到任何错误。
from keras.models import Sequential
from keras.layers import Dense, Dropout, Activation
from keras.optimizers import SGD
model = Sequential()
model.add(Dense(5000, activation='relu', input_dim=X_train.shape[1]))
model.add(Dropout(0.1))
model.add(Dense(600, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(y_train.shape[1], activation='softmax'))
sgd = SGD(lr=0.01, decay=1e-6, momentum=0.9, nesterov=True)
model.compile(loss='categorical_crossentropy',
optimizer=sgd,
metrics=['accuracy',])
model.fit(X_train, y_train,epochs=5,batch_size=2000)
score = model.evaluate(X_test, y_test, batch_size=2000)
score
当 Keras 遇到我的时会做什么y_train
并看到它是“多”单热编码的,这意味着每一行中存在多个“一”y_train
?基本上,Keras 会自动执行多标签分类吗?对评分指标的解释有什么不同吗?