Особенности узкого места VGG + LSTM в keras

У меня есть предварительно сохраненные узкие места (файлы .npy), полученные из VGG16, примерно для 10 000 изображений. Обучение классификатора SVM (3-классовая классификация) по этим функциям дало мне точность 90% на тестовом наборе. Эти изображения получены из видео. Я хочу обучить LSTM в keras помимо этих функций. Мой фрагмент кода можно найти ниже. Проблема в том, что точность обучения не превышает 43%, что неожиданно. Пожалуйста, помогите мне в отладке проблемы. Я пробовал с разной скоростью обучения.

#Asume all necessary imports done
classes = 3
frames = 5
channels = 3
img_height = 224
img_width = 224
epochs = 20

#Model definition
model = Sequential()
model.add(TimeDistributed(Flatten(),input_shape=(frames,7,7,512)))
model.add(LSTM(256,return_sequences=False))
model.add(Dense(1024,activation="relu"))
model.add(Dense(3,activation="softmax"))
optimizer = Adam(lr=0.1,beta_1=0.9,beta_2=0.999,epsilon=None,decay=0.0)

model.compile (loss="categorical_crossentropy",optimizer=optimizer,metrics=["accuracy"])

model.summary()

train_data = np.load(open('bottleneck_features_train.npy','rb'))

#final_img_data shape --> 2342,5,7,7,512
#one_hot_labels shape --> 2342,3
model.fit(final_img_data,one_hot_labels,epochs=epochs,batch_size=2)

person ravvv    schedule 11.03.2019    source источник


Ответы (1)


Вы, вероятно, пропускаете локальный минимум, потому что скорость обучения слишком высока. Попробуйте уменьшить learning rate до 0,01 -- 0,001 и увеличить количество epochs. Кроме того, уменьшите число нейронов слоя Dense с 1024 до половины. В противном случае вы можете перетренироваться.

person razimbres    schedule 11.03.2019