SVM训练数据集与Alexnet功能数据集相同

时间:2018-09-24 12:49:45

标签: python machine-learning scikit-learn deep-learning svm

我目前正在尝试使用库sklearn训练SVM。我要从alexnet(fc7)中总大小为(200, 4096)的倒数第二层提取特征。下面的代码用于获取功能部件和标签并创建列表。

for j, image in enumerate(images):

    print(j,"/",len(images))
    img = cv2.resize(image.astype(np.float32), (227,227))   
    img = img - imagenet_mean
    img = img.reshape((1, 227, 227, 3))
    img = np.array(img).astype(np.float32)
    layer7Vector = sess.run(prescore, feed_dict={x: img, keep_prob: 1}) 
    imagefeatures.append(layer7Vector) # append all the features

for a, label in enumerate(labels):

    labelfeatures.append(labels)

然后我将要素展平并使标签成为数组。

flatimagefeatures = np.squeeze(imagefeatures)  # Flatten
flatlabelfeatures = np.array(labelfeatures, dtype = int)
flatlabelfeatures = ((flatlabelfeatures[0:1]).T).ravel() 
flatlabelfeatures = flatlabelfeatures.ravel()

然后将其提供给SVM。这几乎是瞬时的。

modelSVM = sklearn.svm.SVC(kernel="linear", C=10000, gamma=0.0001, probability=True, verbose=True)
modelSVM.fit(flatimagefeatures, flatlabelfeatures)

然后我对训练文件中相同类别的一个看不见的数据集进行预测。

predicted_class_test = modelSVM.predict([f2test])

问题是SVM可以准确地预测测试中的所有图像,并且准确度为100%。

我的问题是:

我使用的是经过预先训练的alexnet,在其中使用200张相同的训练图像训练alexnet,然后使用这些图像提取SVM的功能。自从我使用具有Alexnet训练功能的功能训练我的SVM以来,这会对我的SVM造成问题吗?

0 个答案:

没有答案