VGG瓶颈特性+ keras中的LSTM

时间:2019-03-11 17:29:39

标签: keras lstm vgg-net

我已经预存储了从VGG16获得的大约10k图像的瓶颈功能(.npy文件)。在这些功能上训练SVM分类器(3类分类)使我在测试集上的准确度达到了90%。这些图像是从视频获得的。除了这些功能,我想在keras中训练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 :(得分:0)

您可能缺少局部最小值,因为学习率太高。尝试将learning rate减少到0.01-0.001,并增加epochs的数量。另外,将Dense层神经元从1024减少到一半。否则,您可能会过头。