Мой python / sklearn / SVM работает бесконечно - PullRequest
0 голосов
/ 05 октября 2019

Привет. Я пытаюсь обучить MNIST-классификатор с помощью SVM (SVC), sci-kit learn (sklearn). Но мои тренировки идут бесконечно. Что мне делать?

Я пытался изменить параметры SVC, но я не уверен в том, что я делаю, и это не работает ...

Количество обучающих данных составляет 60 000. Пожалуйста, помогите мне

    import os
    import struct
    import numpy as np
    import matplotlib .pyplot as plt

    from sklearn.svm import SVC
    from google.colab import drive
    drive.mount('/content/gdrive')

    def read(dataset = "training", path="."):
      if dataset is "training":
        fname_img = os.path.join(path, 'train-images-idx3-ubyte.idx3-ubyte')
        fname_lbl = os.path.join(path, 'train-labels-idx1-ubyte.idx1-ubyte')
      elif dataset is "testing":
        fname_img = os.path.join(path, 't10k-images-idx3-ubyte.idx3-ubyte')
        fname_lbl = os.path.join(path, 't10k-labels-idx1-ubyte.idx1-ubyte')
      else:
        raise Exception("dataset must be 'testing' or 'training'")
      with open(fname_lbl, 'rb') as flbl:
          magic, num = struct.unpack(">II", flbl.read(8))
          lbl = np.fromfile(flbl, dtype=np.int8)

      with open(fname_img, 'rb') as fimg:
        magic, num, rows, cols = struct.unpack(">IIII", fimg.read(16))
        img = np.fromfile(fimg, dtype=np.uint8).reshape(len(lbl), rows, cols)

      get_img = lambda idx: (lbl[idx], img[idx])

        # Create an iterator which returns each image in turn
      for i in range(len(lbl)):
        yield get_img(i)

    tr = list(read("training", "/content/gdrive/My Drive/ColabNotebooks/MNIST"))
    tst = list(read("testing", "/content/gdrive/My Drive/ColabNotebooks/MNIST"))

    def seperate(data):
      labels =[]
      images =[]
      for i in data:
        labels.append(int(i[0]))
        images.append(i[1])
      return {"labels":labels, "images":images}

    train = seperate(tr)
    test = seperate(tst)

    clf = SVC(kernel = 'linear', cache_size = 6000, gamma = 0.001, C = 100)
    train_len = len(tr)
    train_Array = np.array(train["images"]).reshape(train_len, -1)


    clf.fit(train_Array, train["labels"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...