簡體   English   中英

ValueError:檢查目標時出錯:預期dense_2有4個維度,但得到了形狀為(7942, 1)的數組

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

我一直在使用以下功能 API 進行使用 CNN 的圖像分類任務:

def create_model(X_train, X_test):

    visible = Input(shape=(X_train.shape[0], X_train.shape[1], 1))
    conv1 = Conv2D(32, kernel_size=4, activation='relu')(visible)
    hidden1 = Dense(10, activation='relu')(pool2)
    output = Dense(1, activation='sigmoid')(hidden1)

    model = Model(inputs = visible, outputs = output)

    model.compile(loss='binary_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

    return model

X_tr = np.reshape(X_train, (1,X_train.shape[0], X_train.shape[1], 1))
X_te = np.reshape(X_test, (1,X_test.shape[0],  X_test.shape[1], 1))

model = create_model(X_train, X_test)

model.fit(X_tr, y_train, validation_split = 0.1, batch_size=10, epochs=10, verbose = 1, callbacks=[EarlyStopping(patience=5,verbose=1)]) 

其中, X_train是一個 7942*6400 維的列表, y_train是一個具有相應 7942 個標簽的一維列表。

錯誤:

ValueError:檢查目標時出錯:預期dense_2有4個維度,但得到了形狀為(7942, 1)的數組

由於我是函數式 API 的新手,這里可能出了什么問題?

該消息表示y_train與模型的輸出不兼容。

您的模型正在輸出(None, width, height, 1) 您應該在卷積之后添加一個Flatten()層,以使數據從這一點開始只有 2 個維度。


補充評論:

輸入數據必須具有與模型兼容的形狀。

X_train的形狀必須是(7942,80,80,1)
模型的input_shape必須是(80,80,1)

如果您使用(1,6400, 1)形狀,則您的Conv2D圖層將毫無用處,因為它無法將數據解釋為 2D 圖像。

暫無
暫無

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

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