Набор обучающих данных SVM совпадает с набором данных Alexnet - PullRequest
0 голосов
/ 24 сентября 2018

В настоящее время я пытаюсь обучить SVM с использованием библиотеки sklearn.Я извлекаю элементы из предварительно подготовленного предпоследнего слоя в 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, где я тренирую alexnet с теми же 200 тренировочными изображениями, которые затем использую для извлечения функций для SVM.Вызовет ли это проблему для моего SVM, поскольку я обучаю свой SVM тем же функциям, что и у alexnet?

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