我正在Keras中使用CNN进行二进制分类。该数据集总共获得了近8000张图像,但并不平衡-一类具有大约1500个样本,另一类具有6500个样本。在训练之前,我不会随机分配种子。现在,当我几天前运行此模型时,我获得了99%的准确性。前几天,我再次运行它-获得了99%的准确性。可以肯定的是,我又运行了5次,每次都给我相同的结果。现在,经过4天的间隔(当我再次运行它来存储参数和绘制图形时),我的模型仍处于85%的精度和67%的验证精度。时代没有任何变化,只是停留在那里。 我正在使用flow_from_directory即时加载图像,并在加载图像时执行一些扩充。我知道每次都会对权重进行随机初始化,这就是为什么我存储了性能最好的模型的权重的原因。但是我只是无法复制结果。知道这里出了什么问题吗?
model = Sequential()
model.add(Conv2D(32, kernel_size=(5, 5),
activation='relu',
input_shape=(476,476,3)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(64, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(128, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Dropout(0.5))
model.add(Conv2D(256, (5, 5), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.compile(loss=binary_crossentropy,
optimizer=Adam(learning_rate=0.0001),
metrics=['accuracy'])
答案 0 :(得分:0)
99%的准确性的可能性非常小,尤其是考虑到您的ANN与最新技术(例如,对cats vs dogs challenge这样的数据集,准确率接近99%。另外,请注意,使用后者,您可以在平衡的设置中拥有约25000张图像。
85%的训练准确度和67%的验证准确度听起来很合理,而您对数据集一无所知。当然,您应该尝试通过增加少数群体来解决这种不平衡。
那么,为什么您之前会获得99%的收入?矩阵故障或极端运气。如果无法再现,请忽略它,而专注于您现在得到的结果。最后但并非最不重要的一点是,确保将种子固定在任何随机过程中。