簡體   English   中英

Keras:密集層中的錯誤形狀

[英]Keras: wrong shape in Dense layer

我正在嘗試准備一個模型,該模型采用形狀為 56x56 像素和 3 個通道的輸入圖像:(56, 56, 3)。 輸出應該是一個包含 216 個數字的數組。 我重用了來自數字識別器的代碼並對其進行了一些修改:

model = Sequential()

model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'Same', 
                 activation ='relu', input_shape = (56,56,3)))
model.add(Conv2D(filters = 32, kernel_size = (5,5),padding = 'Same', 
                 activation ='relu'))
model.add(MaxPool2D(pool_size=(2,2)))
model.add(Dropout(0.25))


model.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same', 
                 activation ='relu'))
model.add(Conv2D(filters = 64, kernel_size = (3,3),padding = 'Same', 
                 activation ='relu'))
model.add(MaxPool2D(pool_size=(2,2), strides=(2,2)))
model.add(Dropout(0.25))


model.add(Flatten())
model.add(Dense(256, activation = "relu"))
model.add(Dropout(0.5))
model.add(Dense(216, activation = "linear"))

from tensorflow.python.keras.losses import categorical_crossentropy
model.compile(loss = categorical_crossentropy,
                     optimizer = "adam",
                     metrics = ['accuracy'])

這給了我一個錯誤:

ValueError: Error when checking target: expected dense_1 to have shape (216,) but got array with shape (72,)

我知道如何編碼分類器模型但不獲取數組作為輸出,所以可能我沒有在最后一個 Dense 層中設置正確的形狀。 我不知道應該是 1 還是 216。

我在這篇文章中讀到問題可能是損失函數,但我不確定我應該使用什么其他損失函數。

提前致謝!

最后一層應該與目標類具有相同的形狀

改變

model.add(Dense(216, activation = "linear"))

model.add(Dense(72, activation = "linear"))

如您所見,給定的輸入是input_shape = (56,56,3)

現在你當前的數據形狀是56

應用32的過濾器后,您的數據形狀為72

並且這行代碼你的密集層有 256 節點,這意味着(你的密集是為了從數組接收256輸入但得到72

model.add(Dense(256, activation = "relu"))

您可以更改過濾器形狀或將256更改為72

我希望這對你有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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