Tôi không chắc chắn cách diễn giải hành vi mặc định của Keras trong tình huống sau:Keras xử lý phân loại nhiều nhãn như thế nào?
Y của tôi (được thiết lập) sử dụng scikit-learn's MultilabelBinarizer
().
Do đó, để đưa ra một ví dụ ngẫu nhiên, một hàng của cột y
của tôi được mã hóa một nóng như sau: [0,0,0,1,0,1,0,0,0,0,1]
.
Vì vậy, tôi có 11 lớp học có thể được dự đoán và nhiều lớp có thể đúng; do đó bản chất đa nhãn của vấn đề. Có ba nhãn cho mẫu cụ thể này.
Tôi đào tạo mô hình như tôi sẽ cho một vấn đề không đa nhãn (kinh doanh như bình thường) và tôi không nhận được lỗi.
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
không Keras làm gì khi nó gặp y_train
của tôi và thấy rằng nó là "đa" một nóng được mã hóa, có nghĩa là có nhiều hơn một 'một' hiện diện trong mỗi hàng của y_train
? Về cơ bản, Keras có tự động thực hiện phân loại nhiều nhãn không? Bất kỳ sự khác biệt trong việc giải thích các số liệu chấm điểm?
Cảm ơn, vì vậy bạn đang nói để phân hủy vấn đề multilabel tôi vào nhiều vấn đề phân loại nhị phân? Làm thế nào để Keras biết rằng tôi đang cho nó một nhiệm vụ phân loại đa nhãn hiệu? – user798719
Vâng, đúng vậy. Keras không thực sự phải biết. Bằng cách sử dụng 'sigmoid' và' binary_crossentropy', các nhãn sẽ được cải thiện riêng lẻ, và đó là cách bạn muốn cho tác vụ đa nhãn, phải không? – frankyjuang
làm thế nào bạn sẽ có được các lớp học có 1 –