簡體   English   中英

ValueError:檢查目標時出錯:預期density_35具有4維,但數組的形狀為(1157,1)

[英]ValueError: Error when checking target: expected dense_35 to have 4 dimensions, but got array with shape (1157, 1)

我有以下形狀的訓練和測試圖像數據。

X_test.shape , y_test.shape , X_train.shape , y_train.shape
    ((277, 128, 128, 3), (277, 1), (1157, 128, 128, 3), (1157, 1))

我正在訓練模特

def baseline_model():
    filters = 100
    model = Sequential()
    model.add(Conv2D(filters, (3, 3), input_shape=(128, 128, 3), padding='same', activation='relu'))
    #model.add(Dropout(0.2))
    model.add(BatchNormalization())
    model.add(Conv2D(filters, (3, 3), activation='relu', padding='same'))
    model.add(BatchNormalization())

    model.add(MaxPooling2D(pool_size=(2, 2)))
    #model.add(Flatten())

    model.add(Conv2D(filters, (3, 3), activation='relu', padding='same'))
    model.add(BatchNormalization())
    model.add(Conv2D(filters, (3, 3), activation='relu', padding='same'))
    model.add(Activation('linear'))
    model.add(BatchNormalization())

    model.add(Dense(512, activation='relu'))
    model.add(Dense(num_classes, activation='softmax'))
    # Compile model
    lrate = 0.01
    epochs = 10
    decay = lrate/epochs
    sgd = SGD(lr=lrate, momentum=0.9, decay=decay, nesterov=False)
    model.compile(loss='sparse_categorical_crossentropy', optimizer=sgd, metrics=['accuracy'])

    print(model.summary())
    return model

但我收到以下錯誤

檢查目標時出錯:預期density_35具有4維,但數組的形狀為(1157,1)

請告訴我我正在犯什么錯誤以及如何解決此問題。 我已附上模型摘要的快照 在此處輸入圖片說明

盡管density_35需要提供4維數據,但是根據錯誤,網絡將以2維數據作為標簽矢量。

您可能忘記做的一件事是在第一個Dense層之前添加Flatten層:

model.add(BatchNormalization())

model.add(Flatten()) # flatten the output of previous layer before feeding it to Dense layer
model.add(Dense(512, activation='relu'))

之所以需要它,是因為Dense層不會使輸入變平。 而是將其應用於最后一個維度

暫無
暫無

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

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