![](/img/trans.png)
[英]ValueError: Error when checking target: expected dense_2 to have 4 dimensions, but got array with shape (64, 50) (Keras)
[英]ValueError: Error when checking target: expected dense_2 to have shape (1,) but got array with shape (50,)
這是我的 cnn 模型代碼我在這里使用 flow_from_directory() 我不知道這個錯誤的解決方案。
如果解決方案是我必須使用 One-Hot Encoding 將標簽轉換為一組 50 個數字以輸入到神經網絡中。 你能向我解釋如何在我的代碼中使用它嗎
model = Sequential()
model.add(Conv2D(32,3,3, input_shape = (64,64,3), activation = "sigmoid"))
model.add(MaxPooling2D(pool_size=(2,2)))
model.add(Flatten())
model.add(Dense(output_dim = 512, activation="sigmoid"))
model.add(Dense(output_dim=50, activation="softmax"))
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator( rescale = 1./255,
shear_range = 0.2,
zoom_range=0.2,
horizontal_flip=True)
test_datagen = ImageDataGenerator(rescale = 1./255)
training_set = train_datagen.flow_from_directory('Datasets/300_train',
target_size=(64,64),
batch_size = 32,
class_mode='categorical')
testing_set = test_datagen.flow_from_directory('Datasets/300_test',
target_size=(64,64),
batch_size = 32,
class_mode='categorical')
from IPython.display import display
from PIL import Image
model.fit_generator(training_set, steps_per_epoch=250,
epochs=10,validation_data=testing_set,
validation_steps=50)
這是我的錯誤報告:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-5-fcc5eb74d290> in <module>
6 epochs=10,
7 validation_data=testing_set,
----> 8 validation_steps=50)
.....
ValueError: Error when checking target: expected dense_2 to have shape (1,) but got array with shape (50,)
我的問題的解決方案是:將損失函數從sparse_categorical_crossentropy
為categorical_crossentropy
您可以在以下內容中找到更多信息: sparse_categorical_crossentropy和categorical_crossentropy
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.