В этой работе я буду создавать базовую нейронную сеть, используя только библиотеку Python NumPy.

Шаг 1:

Давайте сначала создадим наши независимые переменные или входной набор функций и соответствующую зависимую переменную или метки.

input_set = np.array ([[0,1,0],

[0,0,1],

[1,0,0],

[1,1,0],

[1,1,1],

[0,1,1],

[0,1,0]])

#зависимая переменная

label = np.array ([[1,

0,

0,

1,

1,

0,

1]])

label = labels.reshape (7,1) # преобразовать надписи в векторные

Шаг 2:

Определить гиперпараметры; мы будем использовать функцию numpy random.seed, чтобы мы могли получать одни и те же случайные значения всякий раз, когда выполняем код.

np.random.seed (42)

веса = np.random.rand (3,1)

bias = np.random.rand (1)

lr = 0,05 # скорость обучения

Шаг 3:

Определите функцию активации и ее производную: наша функция активации - это сигмоидальная функция.

def sigmoid (x): # сигмовидная функция

возврат 1 / (1 + np.exp (-x))

def sigmoid_derivative (x): # производная сигмоидной функции

вернуть сигмовидную (x) * (1-сигмовидную (x))

Шаг 4:

Пришло время обучить нашу модель ИНС, мы обучим алгоритм на наших данных 25 000 раз, так что наши эпохи будут 25 000.

для эпохи в диапазоне (25000):

input = input_set

XW = np.dot (входные данные, веса) + смещение

z = сигмовидная (XW)

error = z - метки

печать (error.sum ())

dcost = ошибка

dpred = sigmoid_derivative (z)

z_del = dcost * dpred

input = input_set.T

веса = веса - lr * np.dot (входы, z_del)

для числа в z_del:

bias = bias - lr * num

Шаг 5:

Сделайте прогнозы; пришло время сделать некоторые прогнозы. Давай попробуем с [1,0,0]

single_pt = np.array ([1,0,0])

результат = сигмоид (np.dot (single_pt, weights) + bias)

печать (результат)

# output = [0,02262959]

Как видите, вывод ближе к 0, чем к 1, поэтому он классифицируется как 0. Давайте попробуем еще раз с [0,1,0]

single_pt = np.array ([0,1,0])

результат = сигмоид (np.dot (single_pt, weights) + bias)

печать (результат)

# output = [0.98778682]

Как видите, результат ближе к 1, чем к 0, поэтому он классифицируется как 1.

Недостаток данной модели:

Разработанная ИНС не сможет классифицировать нелинейно разделимые данные.