小编Ani*_*yan的帖子

ValueError:形状不匹配:标签的形状(接收的(15,))应等于对数的形状,除了最后一个维度(接收的(5,3))

尝试拟合模型时出现此错误:

ValueError:形状不匹配:标签的形状(接收的(15,))应该等于除最后一个维度(接收的(5,3))之外的logits的形状。

产生错误的代码:

history = model.fit_generator(
  train_generator,
  epochs=10,
  validation_data=validation_generator)
Run Code Online (Sandbox Code Playgroud)

这是train_generator,验证生成器类似:

train_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
        train_dir,
        target_size=(IMG_WIDTH, IMG_HEIGHT),
        batch_size=5)
Run Code Online (Sandbox Code Playgroud)

我尝试获得形状:

for data_batch, labels_batch in train_generator:
    print('data batch shape:', data_batch.shape)
    print('labels batch shape:', labels_batch.shape)
    break
Run Code Online (Sandbox Code Playgroud)

数据批次形状:(5, 192, 192, 3) 标签批次形状:(5, 3)

当我更改批量大小时,错误中的标签形状也会相应更改(批量大小为 3 时会出现标签形状 (9,) 的错误,例如,我有 3 个类)。但我担心它是由 train_generator 完成的,我能做些什么来解决这个问题吗?此外,当我从 train_generator 打印形状时,似乎是正确的。

这是模型,以防万一:

model = models.Sequential()
model.add(layers.Conv2D(32, (3, 3), activation='relu',
                        input_shape=(IMG_WIDTH, IMG_HEIGHT, 3)))
model.add(layers.MaxPooling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu'))
model.add(layers.MaxPooling2D((2, 2)))
for i in range(2):
  model.add(layers.Conv2D(128, (3, 3), activation='relu'))
  model.add(layers.MaxPooling2D((2, …
Run Code Online (Sandbox Code Playgroud)

python keras tensorflow

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

keras ×1

python ×1

tensorflow ×1