logo
Loading...

使用loss function的結果為什麼是binary_crossentropy最高,卻不是categorical_crossentropy? - Cupoy

In [0]:在此題DataSet:cifar10應屬多分類問題, 我在train多個不同的loss...

ml100-2,ml100-2-d71,loss_function

使用loss function的結果為什麼是binary_crossentropy最高,卻不是categorical_crossentropy?

2019/09/25 下午 04:35
機器學習共學討論版
KatyChou
觀看數:117
回答數:2
收藏數:0
ml100-2
ml100-2-d71
loss_function


In [0]:


在此題DataSet:cifar10應屬多分類問題, 我在train多個不同的loss func&optimizer,若找開始overfit的acc結果如下, 請教為acc最高的是binary_crossentropy,卻不是categorical_crossentropy?? ''' model1.compile(loss='categorical_crossentropy', optimizer='Adam', metrics=['accuracy']) acc約: 0.6781 model2.compile(loss='mean_squared_error', optimizer='sgd', metrics=['accuracy']) X model5.compile(loss='mean_squared_error', optimizer='Adam', metrics=['accuracy']) acc約: 0.6173 model3.compile(loss='binary_crossentropy', optimizer='sgd', metrics=['accuracy']) acc約: 0.9000 model4.compile(loss='binary_crossentropy', optimizer='Adam', metrics=['accuracy']) val_acc約: 0.9275 '''

回答列表

  • 2019/09/25 下午 10:54
    張維元 (WeiYuan)
    贊同數:0
    不贊同數:1
    留言數:0

    binary_crossentropy 比較高應該是合理的,因為模型把「多分類」當成「二分類」在進行。分成兩類比分成多累還要簡單的關係?

  • 2019/12/25 下午 10:02
    羅芳彥
    贊同數:0
    不贊同數:0
    留言數:0

    剛好看到這篇來回答一下, 原因是當使用binary_crossentropy時設定的accuracy在Keras中會默認為binary_accuracy, 相同的, 使用categorical_crossentropy時設定的accuracy則是categorical_accuracy, 因此造成計算上的錯誤, 而只要將metrics=['accuracy']改為metrics=['categorical_accuracy']就會發現準確率不會那麼高囉!