Нейронная сеть Numpy не обучается (застряла на точности 10%) – PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Нейронная сеть Numpy не обучается (застряла на точности 10%) – Python

Сообщение Anonymous »

Итак, я пытаюсь создать базовую ИНС, используя numpy. Дело в том, что я продолжаю получать прогноз точности около 10% и не понимаю, почему это так. Вот весь код.

Код: Выделить всё

import numpy as np
import pandas as pd
from matplotlib import pyplot as plt

data = pd.read_csv('train.csv')

data = np.array(data)
m, n = data.shape
np.random.shuffle(data)

data_train = data.T
X_train = data_train[1:n]
Y_train = data_train[0]

def init_params():
W1 = np.random.randn(10, 784)
b1 = np.random.rand(10, 1)
W2 = np.random.randn(10, 10)
b2 = np.random.randn(10, 1)
return W1, b1, W2, b2

def ReLU(Z):
return np.maximum(0, Z)

def softmax(Z):
e = np.exp(Z - Z.max(axis=0, keepdims=True))
return e/e.sum(axis=0, keepdims=True)

def forward_prop(W1, b1, W2, b2, X):
Z1 = W1.dot(X) + b1
A1 = ReLU(Z1)
Z2 = W2.dot(A1) + b2
A2 = softmax(Z2)
return Z1, A1, Z2, A2

def one_hot(Y):
one_hot_Y = np.zeros((Y.size, Y.max() + 1))
one_hot_Y[np.arange(Y.size), Y] = 1
one_hot_Y = one_hot_Y.T
return one_hot_Y

def deriv_ReLU(Z):
return (Z > 0).astype(int)

def back_prop(Z1, A1, Z2, A2, W2, X, Y):
m = Y.size
one_hot_Y = one_hot(Y)
dZ2 = A2 - one_hot_Y
dW2 = 1 / m * dZ2.dot(A1.T)
db2 = 1 / m * np.sum(dZ2, 1).reshape(-1, 1)
dZ1 = W2.T.dot(dZ2) * deriv_ReLU(Z1)
dW1 = 1 / m * dZ1.dot(X.T)
db1 = 1 / m * np.sum(dZ1, 1).reshape(-1, 1)
return dW1, db1, dW2, db2

def update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha):
W1 = W1 - alpha * dW1
db1 = b1 - alpha * db1
W2 = W2 - alpha * dW2
db2 = b2 - alpha * db2
return W1, b1, W2, b2

def get_predictions(A2):
return np.argmax(A2, 0)

def get_accuracy(predictions, Y):
print(predictions, Y)
return np.sum(predictions == Y) / Y.size

def gradient_descent(X, Y, iterations, alpha):
W1, b1, W2, b2 = init_params()
for i in range(iterations):
Z1, A1, Z2, A2 = forward_prop(W1, b1, W2, b2, X)
dW1, db1, dW2, db2 = back_prop(Z1, A1, Z2, A2, W2, X, Y)
W1, b1, W2, b2 = update_params(W1, b1, W2, b2, dW1, db1, dW2, db2, alpha)
if (i % 50):
print(f'Iteration: {i}')
print(f'Accuracy: {get_accuracy(get_predictions(A2), Y)}')
return W1, b1, W2, b2

W1, b1, W2, b2 = gradient_descent(X_train, Y_train, 100, 0.1)
Я думал, что это может быть проблема с данными, которые я использовал, но после проверки новых данных это оказалось не так. ТАК очевидно, что где-то в обратном распространении (я предполагаю) я что-то напутал и поменял некоторые переменные. Используемые данные представляют собой набор рукописных чисел MNIST, и существует 10 классов.
Я немного покопался и заметил, что на самом деле модель, похоже, все время выводит одно число в качестве прогноза. Я не понимаю почему.

Подробнее здесь: https://stackoverflow.com/questions/791 ... acy-python
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Нейронная сеть Numpy не обучается (застряла на точности 10%) – Python
    Anonymous » » в форуме Python
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Нейронная сеть Numpy не обучается (застряла на точности 10%) – Python
    Anonymous » » в форуме Python
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Нейронная сеть MNIST с нуля жестко устойчиво при 40% точности
    Anonymous » » в форуме Javascript
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Нейронная сеть, построенная с нуля с использованием Numpy, не учится
    Anonymous » » в форуме Python
    0 Ответы
    2 Просмотры
    Последнее сообщение Anonymous
  • Нейронная сеть Python: TypeError: Исключения должны происходить из базис
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»