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