我已经预存储了从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)
答案 0 :(得分:0)
您可能缺少局部最小值,因为学习率太高。尝试将learning rate
减少到0.01-0.001,并增加epochs
的数量。另外,将Dense
层神经元从1024减少到一半。否则,您可能会过头。