【发布时间】:2020-03-14 09:08:39
【问题描述】:
我在 Keras 中使用 CNN 执行二进制分类。该数据集总共有近 8k 张图像,但并不平衡——一类有大约 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'])
【问题讨论】:
标签: python machine-learning keras deep-learning conv-neural-network