Попытка перейти к регрессии #1

This commit is contained in:
2025-08-17 16:01:09 +07:00
parent 544a9b8bc9
commit 57d2b28d82
4 changed files with 37 additions and 48 deletions

View File

@@ -2,7 +2,12 @@ import math
import random
def sigmoid(x):
return 1 / (1 + math.exp(-x))
if x >= 0:
z = math.exp(-x)
return 1 / (1 + z)
else:
z = math.exp(x)
return z / (1 + z)
def sigmoid_derivative(x):
s = sigmoid(x)
@@ -12,21 +17,20 @@ class SimpleNN:
def __init__(self):
# инициализация весов случайными числами
self.w1 = random.uniform(-1, 1)
self.w2 = random.uniform(-1, 1)
self.b = random.uniform(-1, 1) # смещение
self.w_out = random.uniform(-1, 1)
self.b_out = random.uniform(-1, 1)
self.lr = 0.001 # скорость обучения
def forward(self, x1, x2):
def forward(self, x1):
# прямой проход
self.z1 = self.w1 * x1 + self.w2 * x2 + self.b
self.z1 = self.w1 * x1 + self.b
self.a1 = sigmoid(self.z1) # активация скрытого слоя
self.z2 = self.w_out * self.a1 + self.b_out
self.a2 = sigmoid(self.z2) # выход сети
return self.a2
def backward(self, x1, x2, y):
def backward(self, x1, y):
# вычисляем ошибку
error = self.a2 - y # dL/da2
@@ -38,12 +42,11 @@ class SimpleNN:
# производные для скрытого слоя
d_hidden = d_out * self.w_out * sigmoid_derivative(self.z1)
self.w1 -= self.lr * d_hidden * x1
self.w2 -= self.lr * d_hidden * x2
self.b -= self.lr * d_hidden
def train(self, data, epochs=1000):
def train(self, dataset, answs, epochs=1000):
for _ in range(epochs):
for x1, x2, y in [i.get_tup() for i in data]:
self.forward(x1, x2)
self.backward(x1, x2, y)
for i in range(len(dataset)):
self.forward(dataset[i])
self.backward(dataset[i], answs[i])