20
我不确定如何解释在下列情况下Keras的默认行为:Keras如何处理多标签分类?
我的Y(地面实况)已设置使用scikit学习的MultilabelBinarizer
()。
因此,给一个随机的例子,我的y
列的一行是一个热门编码,如: [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是否会自动执行多标签分类?评分指标的解释有何不同?
谢谢你,所以你说的分解我多标记问题分成许多二元分类问题? Keras如何知道我正在给它一个多标签分类任务? – user798719
是的,那是对的。凯拉斯并不需要知道。通过使用'sigmoid'和'binary_crossentropy',标签将单独提高,这就是你想要的多标任务,对不对? – frankyjuang
你将如何获得1级的课程 –