准确的错误:
ValueError:在传递validation_data时,必须包含2项(x_val、y_val)或3项(x_val、y_val、val_sample_weights),但是它包含39项
我在任何地方都找不到这个错误,除了源代码。
model.fit( train_x
, train_y
, epochs=1
, validation_data=validation_data_flow
, callbacks=[checkpointer]
)validation_data是DirectoryIterator,由flow_from_directory著
validation_data_flow = ImageDataGenerator().flow_from_directory(
validation_data_dir,
target_size = (img_width, img_height),
batch_size = batch_size,
class_mode = 'categorical')发布于 2019-09-25 18:26:55
验证和培训数据必须是相同类型的,既可以是生成器,也可以是ndarray。要解决这个问题,您需要将其中一个转换为另一个类型。看看this的答案,了解如何将生成器转换为ndarray。若要将ndarray转换为生成器,请使用ImageDataGenerator.flow()。
发布于 2019-09-25 19:47:03
对于同一类型的数据(如数组或生成器)进行训练和验证并不是完全正确的,但是不能使用相同的函数进行训练和验证。
您可以在数组上进行训练,并在生成器上进行验证,但这将需要两个不同的函数调用,这意味着如果您使用多个时代,则不会在每个时代之后获得验证度量。你可以解决这个问题,比如:
for i in range(epochs):
model.fit(train_x, train_y, epochs=1, callbacks=[checkpointer])
loss = model.evaluate_generator(validation_data_flow)
print("Validation loss for epoch %s was %s" % (i, loss))https://stackoverflow.com/questions/58093506
复制相似问题