图像分类-按类型的电影海报。 Keras模型过度拟合

时间:2019-01-08 01:20:50

标签: python-3.x keras deep-learning epoch

请注意每个人,这是“多标签”问题,而不是“多类”问题。这是一个多标签,多类别的问题。我试图通过仅阅读图像就按类型对电影海报进行分类。我总共有22000张图像。我对Keas模型的一种流派进行了热编码,以预测电影的多种流派(在最终的密集层激活中使用了S形)。我需要推荐合适的批处理大小和纪元数。我正在使用VGG16。我也想知道如何选择要冻结的图层。

我使用VGG16尝试了25个纪元。该模型往往过拟合。批次大小为10。

这是我按类型划分的训练图像(注意:电影可能不止一种类型,这种情况经常发生)

{“操作”:2226.0,  惊悚片:2788.0,  '戏剧':9283.0,  '浪漫':2184.0,  '恐怖':2517.0,  '科幻':756.0,  '神秘':918.0,  '冒险':1105.0,  '动画':583.0,  “犯罪”:1369.0,  '喜剧':5524.0,  ``幻想'':735.0,  “家庭”:991.0,  “音乐”:319.0,  “历史记录”:359.0,  ``战争'':177.0,  '音乐':191.0,  '传记':484.0,  “运动”:190.0}

conv_base = VGG16(weights = 'imagenet', include_top = False, input_shape = (224,224,3))

for layer in conv_base.layers[6:]:
    layer.trainable = False

early = EarlyStopping(monitor='acc', patience=7, mode='auto')

classifier = Sequential()
classifier.add(conv_base)

from keras.layers import Dropout
classifier.add(Dense(units = 128, activation = "relu"))
classifier.add(Dropout(0.2))
classifier.add(Dense(units = 128, activation = "relu"))
classifier.add(Dropout(0.1))
classifier.add(Dense(units = 19, activation = 'sigmoid'))

classifier.compile(optimizer = 'adam', loss = 'binary_crossentropy', metrics = ["accuracy"])

classifier.fit(X_train, y_train, epochs=15, batch_size=10, callbacks = [early])

0 个答案:

没有答案