Особенности узких мест VGG + LSTM в керасе - PullRequest
0 голосов
/ 11 марта 2019

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

1 Ответ

0 голосов
/ 11 марта 2019

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...