Загрузка данных


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]))}")