Проблемы с программой линейной регрессии - PullRequest
0 голосов
/ 06 октября 2018

Я пытаюсь использовать программу линейной регрессии для прогнозирования рукописных чисел с использованием набора данных mnist.Всякий раз, когда я пытался запустить его, функция градиентного спуска всегда работает некоторое время, и для достижения правильного веса требуется много времени.За восемь часов он прошел через функцию 550 раз, и все еще много ошибок.Может кто-нибудь сказать мне, если это обычно занимает много времени, или я делаю что-то не так.

import numpy as np
import pandas as pd

mnist = pd.read_csv('mnist_train.csv')[:4200]
x = np.array(mnist)[:4200,1:]
y = np.array(mnist)[:4200,0].reshape(4200,1)

#How many numbers in dataset
n = len(x)
#How many values in each number
n1 = len(x[0])

#sets all weights equal to 1
coef = np.array([1 for i in range(n1)])

epochs = 1000000000000
learning_rate = .000000000008999
for i in range(epochs):
    cur_y = sum(x*coef)
    error = y-cur_y
    #Calculates Gradient
    grad = (np.array([sum(sum([-2/n  * (error)* x[j,i] for j in range(n)])) for i in range(n1)]))
    #Updates Weights
    coef = (-learning_rate * grad) + coef
    print(i)
    print(sum(y-(x*coef)))

1 Ответ

0 голосов
/ 07 октября 2018

Ваша скорость обучения чрезвычайно мала.Кроме того, 784 - это много измерений для линейной регрессии, особенно если вы используете все 60000 выборок.SVM будет работать лучше, и, очевидно, CNN будет лучше.

Учитывая, что ваша ошибка становится меньше, я бы порекомендовал увеличить вашу скорость обучения и тренироваться, используя стохастические градиенты (вместо этого выбирая случайные партии из вашего тренировочного набора для каждой эпохи)всего тренировочного набора).

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