[英]Keras Dense Layer Output - Shape Error
我正在使用LSTM解決NLP問題。 問題是具有3個類別(1,2和3)的多類別分類。 因此,我使用以下代碼轉換了目標類: y_train=to_catgorical(y_train)
並類似地為y_test
。 但是在我寫model.add((Dense(3,activation='softmax'))
的輸出密集層中,出現以下錯誤:
檢查目標時出錯:預期density_1具有形狀(None,3),但數組的形狀(658118,4)
但是,當我將其修復為model.add((Dense(4,activation='softmax'))
,即n + 1(n =要預測的類數),它可以工作, 但是在Keras示例中,它們已經與cifar10一起工作了。數據集,並且使用的類數為10,而不是11,並且可以工作,在二進制分類的情況下(要預測2個類),我們僅使用1個輸出,即model.add(Dense(1,"sigmoid"))
。我已經看完了這篇文章,但仍然無法找到令人信服的邏輯,因此我想通過Keras中的Dense層輸出形狀來清除此概念。
PS我了解的是,Keras考慮從0:num_classes
類,因此我們必須再進行一次轉換。 但是要問一件事,那么“ 0”向量層必須保留未使用的權利嗎? 在cifar10數據集的情況下,是否類是0:9
,這就是為什么num_classes = 10起作用的原因? 如果真是這樣,那么如果我們必須對3個類(0,1&2)進行預測,那么我們可以使用num_classes = 3對嗎?
也許重要的是要注意使用Keras框架來提供一種熱編碼功能:
from keras.datasets import cifar10
from keras.utils import np_utils
y_label_train_OneHot = np_utils.to_categorical(y_label_train)
y_label_test_OneHot = np_utils.to_categorical(y_label_test)
您可以看到此代碼代碼簡而言之,我個人認為使用不同的功能會導致一組不同的類別。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.