簡體   English   中英

Keras密集層輸出-形狀錯誤

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM