Я пытаюсь обучить Си-Эн-Эн классифицировать текст по темам. Когда я использую двоичную кроссентропию, я получаю точность ~ 80%, а с категориальной кроссентропией - ~ 50%.
Я не понимаю, почему это так. Это проблема мультикласса, не означает ли это, что я должен использовать категорическую перекрестную энтропию и что результаты с двоичной перекрестной энтропией бессмысленны?
model.add(embedding_layer)
model.add(Dropout(0.25))
# convolution layers
model.add(Conv1D(nb_filter=32,
filter_length=4,
border_mode='valid',
activation='relu'))
model.add(MaxPooling1D(pool_length=2))
# dense layers
model.add(Flatten())
model.add(Dense(256))
model.add(Dropout(0.25))
model.add(Activation('relu'))
# output layer
model.add(Dense(len(class_id_index)))
model.add(Activation('softmax'))
Затем я скомпилирую его, используя categorical_crossentropy
в качестве функции потерь:
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
или
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])