我正在尝试培训CNN按主题对文本进行分类。当我使用二进制交叉熵时,我得到~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'])
翻过高山走不出你
慕虎7371278