二元交叉熵和分类交叉熵的不同结果

我进行了一项实验,比较了binary_crossentropycategorical_crossentropy的使用情况。我尝试理解这两个损失函数在同一问题上的行为表现。

我使用此数据处理二分类问题。

在第一次实验中,我在最后一层使用了1个神经元,并使用sigmoid激活函数和binary_crossentropy。我训练了这个模型10次,并计算了平均准确率。平均准确率为74.12760416666666。

我用于第一次实验的代码如下:

total_acc = 0for each_iter in range(0, 10):    print each_iter    X = dataset[:,0:8]    y = dataset[:,8]    # define the keras model    model = Sequential()    model.add(Dense(12, input_dim=8, activation='relu'))    model.add(Dense(8, activation='relu'))    model.add(Dense(1, activation='sigmoid'))    # compile the keras model    model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])    # fit the keras model on the dataset    model.fit(X, y, epochs=150, batch_size=32)    # evaluate the keras model    _, accuracy = model.evaluate(X, y)    print('Accuracy: %.2f' % (accuracy*100))    temp_acc = accuracy*100    total_acc += temp_acc    del model

在第二次实验中,我在最后一层使用了2个神经元,并使用softmax激活函数和categorical_crossentropy。我将目标y转换为分类数据,再次训练了这个模型10次,并计算了平均准确率。平均准确率为66.92708333333334。

我用于第二次设置的代码如下:

total_acc_v2 = 0for each_iter in range(0, 10):    print each_iter    X = dataset[:,0:8]    y = dataset[:,8]    y = np_utils.to_categorical(y)    # define the keras model    model = Sequential()    model.add(Dense(12, input_dim=8, activation='relu'))    model.add(Dense(8, activation='relu'))    model.add(Dense(2, activation='softmax'))    # compile the keras model    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])    # fit the keras model on the dataset    model.fit(X, y, epochs=150, batch_size=32)    # evaluate the keras model    _, accuracy = model.evaluate(X, y)    print('Accuracy: %.2f' % (accuracy*100))    temp_acc = accuracy*100    total_acc_v2 += temp_acc    del model

我认为这两个实验是相同的,应该会得到非常相似的结果。为什么准确率之间会有这么大的差异?


回答:

这种行为的原因似乎是随机性。我运行了你的代码,sigmoid模型的平均准确率约为74,而softmax模型的平均准确率也约为74。

Related Posts

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注