【问题标题】:ValueError: Input arrays should have the same number of samples as target arrays. Found 32 input samples and 128 target samplesValueError:输入数组应具有与目标数组相同数量的样本。找到 32 个输入样本和 128 个目标样本
【发布时间】:2018-10-15 11:12:41
【问题描述】:

我在这里按照本教程进行图像分类。 链接:[Keras图像分类][1]

我将代码扩展为 8 个类,但出现以下错误:

ValueError: Input arrays should have the same number of samples as target arrays. Found 32 input samples and 128 target samples

我的火车顶部模型代码如下:

def train_top_model():
   train_data = np.load(open('bottleneck_features_train', 'rb'))
   train_labels = np.array([0] * (nb_train_samples // 8) + [1] * (nb_train_samples // 8) + [2] * (nb_train_samples // 8) + [3] * (nb_train_samples // 8) + [4] * (nb_train_samples // 8) + [5] * (nb_train_samples // 8) + [6] * (nb_train_samples // 8) + [7] * (nb_train_samples // 8))
   validation_data = np.load(open('bottleneck_features_validation', 'rb'))
   validation_labels = np.array([0] * (nb_train_samples // 8) + [1] * (nb_train_samples // 8) + [2] * (nb_train_samples // 8) + [3] * (nb_train_samples // 8) + [4] * (nb_train_samples // 8) + [5] * (nb_train_samples // 8) + [6] * (nb_train_samples // 8) + [7] * (nb_train_samples // 8))
   train_labels = keras.utils.to_categorical(train_labels, num_classes = 8)
   validation_labels = keras.utils.to_categorical(validation_labels, num_classes = 8)
   model = Sequential()
   model.add(Flatten(input_shape=train_data.shape[1:]))
   model.add(Dense(512, activation='relu'))
   model.add(Dropout(0.5))
   model.add(Dense(8, activation='softmax'))
   sgd = SGD(lr=1e-2, decay=0.00371, momentum=0.9, nesterov=False)
   model.compile(optimizer=sgd,
         loss='categorical_crossentropy', metrics=['accuracy'])
   model.fit(train_data, train_labels,
          epochs=epochs,
          batch_size=batch_size,
   validation_data=(validation_data, validation_labels))
   model.save_weights(top_model_weights_path)

我认为错误想说的是输入应该有 128 个样本,但它只有 32 个。我不确定原因,因为我也得到了这个Found 128 images belonging to 8 classes. 我认为这表明它成功获取了所有128 张图片。

有人可以帮忙吗?非常感谢!

【问题讨论】:

    标签: python numpy keras


    【解决方案1】:

    Keras 抱怨您在验证集中有 32 张图像,而您的验证标签由 128 个元素组成,因为您可能忘记将 nb_train_samples 更改为 nb_validation_samples,所以要修复它,请使用 nb_validation_samples 初始化验证标签。

    【讨论】:

      猜你喜欢
      • 2020-08-31
      • 2023-03-10
      • 2019-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-15
      • 2017-10-26
      • 2019-05-22
      相关资源
      最近更新 更多