![](/img/trans.png)
[英]ValueError: Shapes (None, 2) and (None, 1) are incompatible
[英]how can I overcome “ValueError: Shapes (None, 1) and (None, 7) are incompatible”
我是 Keras 和 CNN 的新手。 我正在做一個任務來構建一個用於預測面部情緒的 CNN。 我根據分配構建了 model,但是在編譯 model 時,我得到“ValueError:形狀(無,1)和(無,7)不兼容”。 有人可以幫我解決這個問題嗎?
在下面粘貼我的代碼以供參考:
'''
model = Sequential()
model.add(Conv2D(filters = 64, kernel_size = 5,input_shape = (48,48,1)))
model.add(Conv2D(filters=64, kernel_size=5,strides=(1, 1), padding='valid'))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2,2),strides=1, padding='valid'))
model.add(Activation('relu'))
model.add(Conv2D(filters = 128, kernel_size = 5))
model.add(Conv2D(filters = 128, kernel_size=5))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Activation('relu'))
model.add(Conv2D(filters = 256, kernel_size = 5))
model.add(Conv2D(filters = 256, kernel_size=5))
model.add(BatchNormalization())
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(128))
model.add(BatchNormalization())
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Dense(7,activation='softmax'))
''' '然后嘗試編譯' '''
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
history = model.fit(input_array, output_array, batch_size = 64, epochs= 20, validation_split=0.10,)
''' '這給出了錯誤' 'ValueError: Shapes (None, 1) and (None, 7) are incompatible' '我正在為此使用google colab'
您很可能使用稀疏編碼的標簽,例如 [ 0,1,2,3,4,5,6]
而不是單熱編碼形式。
您的解決方案是從以下選項之一中進行選擇:
[1,0,0,0,0,0,0]
對於 1 您將擁有[0,1,0,0,0,0,0]
等。sparse_categorical_crossentropy
。 如果您使用此損失函數,則 OHE 步驟在幕后完成,您不再需要處理輸入訓練 + 驗證標簽。 如果您對 label 使用單熱編碼,例如 [0, 0, 0, 0, 0, 0, 1],則需要使用categorical_crossentropy
,但如果您使用稀疏 label,例如 [1, 2, 3, 4, 6, 7] 你需要使用sparse_categorical_crossentropy
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.