【发布时间】:2019-10-16 17:07:26
【问题描述】:
我正在尝试使用 Keras 创建 ResNet50 模型来预测猫与狗。我决定只使用 1000 点的数据子集,并使用 700-150-150 的训练-验证-测试拆分。 (我知道它很小,但这是我的计算机可以处理的。)我已经导入了模型使用
resnet_model = keras.applications.ResNet50(include_top=False, input_tensor=None, input_shape=None, pooling=None, classes=2)
resnet_model.compile(Adam(lr=.0001), loss='categorical_crossentropy', metrics=['accuracy'])
但是当我尝试适应它时
aug = ImageDataGenerator(rotation_range=20, zoom_range=0.15,
width_shift_range=0.2, height_shift_range=0.2, shear_range=0.15,
horizontal_flip=True, fill_mode="nearest")
resnet_model.fit_generator(aug.flow(X_train, y_train, batch_size = batches), steps_per_epoch = len(X_train) // batches,
validation_data = (X_valid, y_valid), validation_steps = 4, epochs = 10, verbose = 1)
我得到以下值错误:
ValueError: 检查目标时出错:预期 activation_352 有 4 维,但得到的数组形状为 (150, 2)
(150,2) 数组显然来自valid_y,但我不知道为什么那个特定的输出应该有 4 维——这应该是标签向量,而不是 4 维图像大小和颜色矢量。有人可以帮我弄清楚如何让模型识别这个输入吗?
注意:我知道 Daniel Möller 提到 here 我需要添加一个 Flatten() 层,但函数模型的性质及其调用似乎不允许这样做,除非我想从头开始重写整个 ResNet(这似乎违背了拥有可重用预训练模型的目的)。任何见解将不胜感激。
【问题讨论】:
标签: python tensorflow keras valueerror resnet