ValueError:输入数组应具有与目标数组相同数量的样本.在培训部分



值错误

我有5722张图片用于训练,当我处理它时,它显示错误:ValueError:输入数组应该与目标数组具有相同数量的样本。找到5722个输入样本和312个目标样本。

  • 5722张图像,属于训练集中的12个类别
  • 312张图像属于验证集中的12个类别
start = datetime.datetime.now()
model = Sequential() 
model.add(Flatten(input_shape=train_data.shape[1:])) 
model.add(Dense(100, activation=keras.layers.LeakyReLU(alpha=0.3))) 
model.add(Dropout(0.5)) 
model.add(Dense(50, activation=keras.layers.LeakyReLU(alpha=0.3))) 
model.add(Dropout(0.3)) 
model.add(Dense(num_classes, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.RMSprop(lr=1e-4),
metrics=['acc'])
history = model.fit(train_data, train_labels, 
epochs=7,
batch_size=batch_size, 
validation_data=(validation_data, validation_labels))
model.save_weights(top_model_weights_path)
(eval_loss, eval_accuracy) = model.evaluate( 
validation_data, validation_labels, batch_size=batch_size,     verbose=1)

值错误

找到5722个输入样本和312个目标样本

/usr/local/lib/python3.6/dist-packages/keras/activations.py:235: UserWarning: Do not pass a layer instance (such as LeakyReLU) as the activation argument of another layer. Instead, advanced activation layers should be used just like any other layer in a model.
identifier=identifier.__class__.__name__))
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-22-9fbdd01293a7> in <module>()
13    epochs=7,
14    batch_size=batch_size,
---> 15    validation_data=(validation_data, validation_labels))
16 model.save_weights(top_model_weights_path)
17 (eval_loss, eval_accuracy) = model.evaluate( 

2 frames
/usr/local/lib/python3.6/dist-packages/keras/engine/training_utils.py in check_array_length_consistency(inputs, targets, weights)
242                          'the same number of samples as target arrays. '
243                          'Found ' + str(list(set_x)[0]) + ' input samples '
--> 244                          'and ' + str(list(set_y)[0]) + ' target samples.')
245     if len(set_w) > 1:
246         raise ValueError('All sample_weight arrays should have '

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

我找到了这个问题的解决方案。它是输入的长度必须相同。因此,我将输入数据和输出数据修改为相同的长度。

例如,我通过预处理数据将两个输入的长度都设置为12。

链接示例

history = model.fit(X_train.as_matrix(), y_train,
batch_size=batch_size,
epochs=epochs,
verbose=1,
validation_data=(X_test.as_matrix(), y_test))

最新更新