import numpy as np
def sigmoid(x):
return 1 / (1 + np.exp(-x))
class Neuron:
def __init__(self, weights, bias):
self.weights = weights
self.bias = bias
def feedforward(self, inputs):
total = np.dot(self.weights, inputs) + self.bias
return sigmoid(total)
# Сценарий 1: 3 входа, 3 нейрона в скрытом слое, 1 выход
class NeuralNetwork1:
def __init__(self):
w = np.array([0.5, 0.5, 0.5])
b = 0
# Скрытый слой (3 нейрона)
self.h1 = Neuron(w, b)
self.h2 = Neuron(w, b)
self.h3 = Neuron(w, b)
# Выходной слой (1 нейрон)
self.o1 = Neuron(w, b)
def feedforward(self, x):
out_h1 = self.h1.feedforward(x)
out_h2 = self.h2.feedforward(x)
out_h3 = self.h3.feedforward(x)
return self.o1.feedforward(np.array([out_h1, out_h2, out_h3]))
# Сценарий 2: 2 входа, 2 нейрона в скрытом слое, 2 выхода
class NeuralNetwork2:
def __init__(self):
w = np.array([1, 0])
b = 1
# Скрытый слой (2 нейрона)
self.h1 = Neuron(w, b)
self.h2 = Neuron(w, b)
# Выходной слой (2 нейрона)
self.o1 = Neuron(w, b)
self.o2 = Neuron(w, b)
def feedforward(self, x):
out_h1 = self.h1.feedforward(x)
out_h2 = self.h2.feedforward(x)
res_o1 = self.o1.feedforward(np.array([out_h1, out_h2]))
res_o2 = self.o2.feedforward(np.array([out_h1, out_h2]))
return np.array([res_o1, res_o2])
# Проверка
network1 = NeuralNetwork1()
print(f"NN1 Output (input [1,2,3]): {network1.feedforward(np.array([1, 2, 3]))}")
network2 = NeuralNetwork2()
print(f"NN2 Output (input [5,10]): {network2.feedforward(np.array([5, 10]))}")