二分类问题:
如果是二分类问题,即最终的结果只能是两个分类中的一个,则损失函数loss使用binary_crossentropy
多分类问题:
对于多分类问题,在选择损失函数loss时,主要是看数据是如何编码的:
1.如果是分类编码(one-hot编码),则使用categorical_crossentropy
我对one-hot编码的理解是:one-hot编码就是在标签向量化的时候,每个标签都是一个N维的向量(N由自己确定),其中这个向量只有一个值为1,其余的都为0。也就是将整数索引i转换为长度为N的二进制向量,这个向量只有第i个元素是1,其余的都是0
Keras有内置的将标签向量化的方法:
from keras.utils.np_utils import to_categorical
one_hot_train_labels = to_categorical(train_labels)
one_hot_test_labels = to_categorical(test_labels)
2.如果是整数编码,则使用sparse_categorical_crossentropy
我对整数编码的理解是:整数编码就是对所有标签都放到一个向量中,每个标签对应向量的一个值