【问题标题】:A target array with shape (32, 3) was passed for an output of shape (None, 15, 15, 3) while using as loss `categorical_crossentropy`形状为 (32, 3) 的目标数组被传递为形状 (None, 15, 15, 3) 的输出,同时用作损失`categorical_crossentropy`
【发布时间】:2020-06-10 17:15:12
【问题描述】:
import tensorflow as tf
from keras.preprocessing.image import ImageDataGenerator

train_datagen = ImageDataGenerator(
        rescale=1./255,
        shear_range=0.2,
        zoom_range=0.2,
        horizontal_flip=True)
training_set = train_datagen.flow_from_directory(
        'animals/training_set',
        target_size=(64, 64),
        batch_size=32,
        class_mode='categorical')

test_datagen = ImageDataGenerator(rescale=1./255)
test_set = test_datagen.flow_from_directory(
        'animals/test_set',
        target_size=(64, 64),
        batch_size=32,
        class_mode='categorical')

cnn = tf.keras.models.Sequential()

cnn.add(tf.keras.layers.Conv2D(filters = 32, kernel_size = 2, activation = 'relu', input_shape = [64, 
64, 3]))

cnn.add(tf.keras.layers.MaxPool2D(pool_size = 2, strides = 2))

cnn.add(tf.keras.layers.Conv2D(filters = 32, kernel_size = 2, activation = 'relu', input_shape = [64, 
64, 3]))
cnn.add(tf.keras.layers.MaxPool2D(pool_size = 2, strides = 2))

cnn.add(tf.keras.layers.Dense(units = 128, activation = 'relu'))

cnn.add(tf.keras.layers.Dense(units = 3, activation = 'softmax'))

cnn.compile(optimizer = 'adam', loss = 'categorical_crossentropy', metrics = ['accuracy'])

cnn.fit(x = training_set, validatian_data = test_set, epochs = 15)

弹出如下错误:

ValueError: 形状为 (32, 3) 的目标数组被传递为形状 (None, 15, 15, 3) 的输出,同时用作损失 categorical_crossentropy。这种损失期望目标具有与输出相同的形状。

【问题讨论】:

    标签: python tensorflow keras deep-learning neural-network


    【解决方案1】:

    您必须在最后一个 Maxpool2D 之后添加一个 tf.keras.layers.Flatten 层,以便在一维数据上使用 Dense 层。否则,密集层适用于导致不匹配的 2D 数据。

    【讨论】:

    • 非常感谢您的帮助,您让我不必再花几个小时重新编写代码。
    【解决方案2】:

    在第二个 cnn.add(tf.keras.layers.Conv2D()) 函数中,您不能传递输入形状。输入形状仅传递给第一层。

    【讨论】:

    • 我也犯了一个错误,非常感谢您的帮助。很遗憾,我无法选择两个正确答案。
    猜你喜欢
    • 1970-01-01
    • 2020-10-08
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 2019-12-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-22
    相关资源
    最近更新 更多