
Добавил:
ohpetya
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:8
.txt 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")
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")