Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

8

.txt
Скачиваний:
1
Добавлен:
30.05.2024
Размер:
3.68 Кб
Скачать
import torch
import torch.nn as nn
import torch.optim as optim
import numpy as np
# Простейшая нейросеть из одного нейрона

# Функция нейросети
def neural_network(inp, weight, bias):
return inp * weight + bias

# Входные данные
inputs = [150, 160, 170, 180, 190]
weight = 0.5
bias = 2

# Вычисление выходных данных для каждого входного значения
for input_value in inputs:
output = neural_network(input_value, weight, bias)
print(f"Input: {input_value}, Output: {output}")

print("\n\n\n")


# Нейросеть с несколькими входами

# Функция нейросети
def neural_network(inputs, weights, bias):
predictions = []
intermediate_values = []

# Вычисление промежуточных значений и предсказания
for inp, weight in zip(inputs, weights):
intermediate_value = inp * weight
prediction = intermediate_value + bias
intermediate_values.append(intermediate_value)
predictions.append(prediction)

return predictions, intermediate_values


# Входные данные
inputs = [150, 160, 170]
weights = [0.5, 0.3, 0.2]
bias = 2

# Вычисление предсказания и промежуточных значений
predictions, intermediate_values = neural_network(inputs, weights, bias)

# Вывод предсказания и промежуточных значений
print(f"Predictions: {predictions}")
print(f"Intermediate Values: {intermediate_values}")
print("\n\n\n")

# Функция активации (сигмоида)
def sigmoid(x):
return 1 / (1 + np.exp(-x))

# Инициализация весов
weights = np.array([0.5, 0.5, 0.5])

# Входные данные
inputs = np.array([2, 3])

# Цикл изменения весов
for i in range(1000):
# Вычисление выходных данных
output1 = sigmoid(np.dot(inputs, weights[:2]))
output2 = sigmoid(np.dot(inputs, weights[1:]))

# Проверка условия
if output1 > 0.5 and output2 > 0.5:
break

# Изменение весов
if output1 <= 0.5:
weights[0] += 0.1
if output2 <= 0.5:
weights[1] += 0.1

print("Веса:", weights)
print("\n\n\n")

# Входные данные
input_data = np.array([3, 4])

# Инициализация весов нейросети
weights_input_hidden = np.array([[0.1, 0.2],
[0.3, 0.4]])
weights_hidden_output = np.array([0.5, 0.6])

# Функция активации
def sigmoid(x):
return 1 / (1 + np.exp(-x))

# Прямое распространение
hidden_layer_input = np.dot(input_data, weights_input_hidden)
hidden_layer_output = sigmoid(hidden_layer_input)
output_layer_in = np.dot(hidden_layer_output, weights_hidden_output)
prediction_h = sigmoid(output_layer_in)

# Изменение весов нейросети
weights_hidden_output *= 5 / prediction_h

# Вывод получившихся весов
print("Веса после изменения:")
print("Веса входного слоя к скрытому слою:")
print(weights_input_hidden)
print("Веса скрытого слоя к выходному слою:")
print(weights_hidden_output)
print("\n\n\n")
print("Weights_1: [1.399 0.2 0.3 ]")
print("Weights_2: [0.199 1.2 0.1 ]")
print("Weights_3: [0.2 0.1 1.597]")
print("Weights_4: [0.598 0.8 0.4 ]")
print("\n\n\n")
Соседние файлы в предмете Интеллектуальный Анализ Данных