Нейросеть на Python

Tyr

Новичок
Пользователь
Сен 9, 2020
1
0
1
Всем привет!
Есть код обученной нейросети, хочу запустить его из другого файла.py, но при этом на входной слой нейронов хочу подать новые значения, чтобы проверить как работает нейронка. Подскажите, как и какие команды прописать типа "from ... Import...", "__Init__" и прочие?

Код:

import numpy as np
import sys
class Neuro(object):
def __init__(self, learning_rate=0.1):
self.weights_0_1 = np.random.normal(0.0, 2 ** -0.5, (2, 3))
self.weights_1_2 = np.random.normal(0.0, 1, (1, 2))
self.sigmoid_mapper = np.vectorize(self.sigmoid)
self.learning_rate = np.array([learning_rate])

def sigmoid(self, x):
return 1 / (1 + np.exp(-x))

def predict(self, inputs):
inputs_1 = np.dot(self.weights_0_1, inputs)
outputs_1 = self.sigmoid_mapper(inputs_1)

inputs_2 = np.dot(self.weights_1_2, outputs_1)
outputs_2 = self.sigmoid_mapper(inputs_2)
return outputs_2

def train(self, inputs, expected_predict):
inputs_1 = np.dot(self.weights_0_1, inputs)
outputs_1 = self.sigmoid_mapper(inputs_1)

inputs_2 = np.dot(self.weights_1_2, outputs_1)
outputs_2 = self.sigmoid_mapper(inputs_2)
actual_predict = outputs_2[0]

error_layer_2 = np.array([actual_predict - expected_predict])
gradient_layer_2 = actual_predict * (1 - actual_predict)
weights_delta_layer_2 = error_layer_2 * gradient_layer_2
self.weights_1_2 -= (np.dot(weights_delta_layer_2, outputs_1.reshape(1, len(outputs_1)))) * self.learning_rate

error_layer_1 = weights_delta_layer_2 * self.weights_1_2
gradient_layer_1 = outputs_1 * (1 - outputs_1)
weights_delta_layer_1 = error_layer_1 * gradient_layer_1
self.weights_0_1 -= np.dot(inputs.reshape(len(inputs), 1), weights_delta_layer_1).T * self.learning_rate

def MSE(y, Y):
return np.mean((y-Y)**2)

train = [
([6.491, 0.844, 9.25], 1),
([12.875, 0.854, 1.16], 1),
([4.193, 0.396, 5.52], 0),
([2.60, 0.185, 1.53], 0),
([11.85, 0.894, 2.1], 1),
([1.395, 0.152, 0.154], 0),
([7.667, 0.884, 29.03], 1),
([5.39, 0.365, 1.76], 0),
]

epochs = 20000
learning_rate = 0.01

network = Neuro(learning_rate=learning_rate)

for e in range(epochs):
inputs_ = []
correct_predictions = []
for input_stat, correct_predict in train:
network.train(np.array(input_stat), correct_predict)
inputs_.append(np.array(input_stat))
correct_predictions.append(np.array(correct_predict))

train_loss = MSE(network.predict(np.array(inputs_).T), np.array(correct_predictions))
sys.stdout.write("\Progress: {}, Training loss: {}".format(str(100 * e/float(epochs))[:4], str(train_loss)[:5]))

for input_stat, correct_predict in train:
print("For input: {} the prediction is: {}, expected: {}".format(
str(input_stat),
str(network.predict(np.array(input_stat)) > .5),
str(correct_predict == 1)))

for input_stat, correct_predict in train:
print("For input: {} the prediction is: {}, expected: {}".format(
str(input_stat),
str(network.predict(np.array(input_stat))),
str(correct_predict == 1)))
 

Форум IT Специалистов