我是ML的新手,并且设法使多类分类运行得非常准确。现在,我正在尝试对图像进行分类,但与我的训练图像匹配或不匹配。我在项目中使用Resnet50和InceptionV3模型。现在,我确实有一组图像(匹配),并且我需要测试测试图像是否匹配。有时也称为异常检测。我使用Keras分类方法,但是在使用两类(好与坏-1致密层)之前使用二进制交叉熵,并使用Sigmoid作为二进制输出。它工作正常,但是在新的过程中,我没有第二等(没有劣质图像),而且我只有很好。 (仍然1个密集层) 我有三个培训,验证和测试文件夹。每个文件夹都有一个包含图像的文件夹(一个类)。
这就是我的做法。 1.我将最后一个密集层设置为1。
predictions = Dense(1, activation='sigmoid',name='output_layer')(x_model)
图像生成器(只有一个包含图像的文件夹)
train_datagen = ImageDataGenerator(rescale = 1./255,
shear_range = 0.3,
zoom_range = 0.3,
rotation_range = 0.3,
vertical_flip = True,
horizontal_flip = True)
validate_datagen = ImageDataGenerator(rescale = 1./255)
train_generator = train_datagen.flow_from_directory(train_dir,
target_size = (size, size),
batch_size = batch_size,
class_mode = 'binary')
validate_generator = validate_datagen.flow_from_directory(test_dir,
target_size = (size, size),
batch_size = batch_size,
class_mode = 'binary')
然后进行培训:
model.fit_generator(train_generator,
epochs = epochs,
validation_data = validate_generator,
class_weight = class_weight,
steps_per_epoch=int(train_generator.samples/batch_size),
callbacks=callbacks_list,
validation_steps = int(validate_generator.samples/batch_size),
)
我没有第二个文件夹,因此验证准确性达到100%。但是测试精度为零。 (当我执行两类二进制分类模型时,情况并非如此)。
对于单个类,我认为神经网络将在单个图像集上得到训练,并将其他所有结果都设为0。显然,这种方式不起作用。现在,我将使用相同的好图像以及所有其他垃圾图像进行另一个培训。
任何建议我该怎么做?我想尽可能多地使用Keras库,因为与此同时我也在学习Python。