Нейронная сеть в 9 строк кода на Python

preview_player
Показать описание
Как сделать простую нейросеть на python с нуля, без библиотек для нейросетей. Всего 9 строчек кода:
from numpy import exp, array, random, dot
training_set_inputs = array([[0, 0, 1], [1, 1, 1], [1, 0, 1], [0, 1, 1]])
training_set_outputs = array([[0, 1, 1, 0]]).T
for iteration in range(10000):
output = 1 / (1 + exp(-(dot(training_set_inputs, synaptic_weights))))
synaptic_weights += dot(training_set_inputs.T, (training_set_outputs - output) * output * (1 - output))
print(1 / (1 + exp(-(dot(array([1, 0, 0]), synaptic_weights)))))
Рекомендации по теме
Комментарии
Автор

Отличное видео, только нихрена не понял.Спасибо.

pavelshangin
Автор

Спасибо, Олег, очень интересно и хотелось бы ещё продолжения подобных видео.

kasyanfert
Автор

Олег, Вы Молодец! Спасибо, реально крутой контент, полезные обучающие видео! Супер, все без воды❤. Основное это практика, нужно начинать с какого- то небольшого простенького кода и постепенно усложнять его, Вы как раз предоставляете такую возможность. Делаете классные вещи, желаю процветания Вашему каналу, новых интересных проектов❤❤❤

limoshkamilk
Автор

Больше такого контента. Но хотелось бы чуть подробнее понять, откуда экспонента и почему что-то там делиться, умножается и складывается 😁

mazur_vg
Автор

Прикольно, только какой практический смысл данной нейронки? :) а если там тренировочная выборка из пары сотен примеров будет (например, при 6 входящих нейронов), то сколько цикл будет выполняться?

dog-foxfo
Автор

import numpy as np

# Задаем входные данные и ожидаемые выходы XOR
training_set_input = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])
training_set_outputs = np.array([[0], [1], [1], [0]])

# Настройка гиперпараметров
learning_rate = 0.1
epochs = 10000

# Создаем нейронную сеть с одним скрытым слоем
input_size = 2
hidden_size = 4
output_size = 1

# Инициализируем веса случайными значениями
synaptic_weights_input_hidden = 2 * np.random.random((input_size, hidden_size)) - 1
= 2 * np.random.random((hidden_size, output_size)) - 1

# Обучение нейронной сети
for epoch in range(epochs):
# Прямое распространение
hidden_layer_input = np.dot(training_set_input,
hidden_layer_output = 1 / (1 + np.exp(-hidden_layer_input))
output_layer_input = np.dot(hidden_layer_output,
output_layer_output = 1 / (1 + np.exp(-output_layer_input))

# Вычисление ошибки
error = training_set_outputs - output_layer_output

# Обратное распространение
output_layer_delta = error * (output_layer_output * (1 - output_layer_output))
hidden_layer_error =
hidden_layer_delta = hidden_layer_error * (hidden_layer_output * (1 - hidden_layer_output))

# Обновление весов
+= * learning_rate
synaptic_weights_input_hidden += * learning_rate

# Тестируем обученную сеть
test_input = np.array([1, 0])
hidden_layer_input = np.dot(test_input,
hidden_layer_output = 1 / (1 + np.exp(-hidden_layer_input))
output_layer_input = np.dot(hidden_layer_output,
output_layer_output = 1 / (1 + np.exp(-output_layer_input))
print("Результат:", output_layer_output[0])

kirilltokarev
Автор

И что? И как этим пользоваться? Что с ней делать? Начинаешь своё что то вбивать, одни и те же числа выдаёт

НикитаЧеботарев-як
Автор

Благодарю за видео, есть код который вместо массивов подключает файл например .txt?

ШурікМакедонський
Автор

Олег, спасибо. Может сделаете урок поработе с Deepface

bomarshee
Автор

Вместо 1 ставишь 0 и выдает 0.5, это называется работает? 😂😂😂😂

dvb
Автор

помогите я добавил 4 значения и оно поломалось

АлиНурлан-лъ
Автор

Да Боже, вы можете нормально кто-нибудь объяснить и дать код многослойного перцептрона? Вы уже задолбали мусолить этот код однослойного перцептрона (ХаудиХо, Дударь, Ты и т.д.) Неужели всем так трудно дать алгоритм обучения многослоенки?

blockedchannel
Автор

Кто пользуется нампай тот не программист, потому что это даже младенец сможет сделать, а с нуля написать кто сможет??

andro-coder
Автор

Ужас от такой бубни у меня чуть Инфаркт не стукнул!

hassansan_endstory
visit shbcf.ru