# Импортируем научную библиотеку для работы с массивами и матрицами+c графикой import numpy as np import matplotlib.pyplot as plt #import seaborn as sns сделает графики приятными # x = (часов спал, часов учил), y = оценка на тесте по 100 бальной шкале X = np.array(([3,5], [5,1], [10,2]), dtype=float) # array - функция, создающая объект типа ndarray y = np.array(([75], [82], [93]), dtype=float)#полученное количество баллов #Проверка инициализации массивов #print("Массив входных данных {}".format(X)) #print("Массив входных данных {}".format(Y)) #Блок масштабирования данных X = X/np.amax(X, axis=0) #Масштабирование наших данных. Делим на максимальное значение 10 y = y/100 #Делим на максимально возможное значение 100 #Проверка МАСШТАБИРОВАНИЯ массивов #print("{}".format(X)) #print("{}".format(y)) print ("{} {}".format(X.shape, y.shape))#функция shape(форма)показывает размерность созданного массива # Создаем класс - объект НАША НЕЙРОСЕТЬ class Neural_Network(object): def __init__(self): # функция с методом инит.Селф указывает какие свойства есть у каждого экземпляра объекта #Задание гиперпараметров(не меняются при обучении) self.inputLayerSize = 2 #задание КОЛИЧЕСТВА ВХОДНЫХ СЛОЕВ self.outputLayerSize = 1 #задание КОЛИЧЕСТВА ВЫХОДНЫХ СЛОЕВ self.hiddenLayerSize = 3 #задание КОЛИЧЕСТВА СКРЫТЫХ СЛОЕВ # Веса (их параметры) случайным образом в начальном рассмотрении self.W1 = np.random.randn(self.inputLayerSize, self.hiddenLayerSize) # ОТ ВХОДНЫХ К СКРЫТЫМ self.W2 = np.random.randn(self.hiddenLayerSize, self.outputLayerSize) # ОТ СКРЫТЫХ К ВЫХОДУ # ФУНКЦИЯ ПРЯМОГО РАСПРОСТРАНЕНИЯ def forward(self, X): self.z2 = np.dot(X, self.W1) # Z2 = X * W2 - матрица сигналов передаваемых в скрытые нейроны self.a2 = self.sigmoid(self.z2) # A2 = Fsig (Z2) - матрица значений НЕЙРОНОВ СКРЫТОГО СЛОЯ self.z3 = np.dot(self.a2, self.W2) # Z3 = A2 * W2 - матрица сигналов передаваемых к ВЫХОДУ yHat = self.sigmoid(self.z3) # Yhat = Fsig (Z3) - вычисление финального значения теста с помощью сигмоида return yHat # возвращаем итоговое значение теста # СИГМОИД def sigmoid(z): #определяем функцию СИГМОИДА return 1/(1+np.exp(-z)) #возвращаем значение сигмоида в зависимости от входа- матрицы вектора или скаляра # Проверка работоспособности сигмоида testInput = np.arange(-6,6,0.1) plt.plot(testInput,Neural_Network.sigmoid(testInput)) plt.show() NN = Neural_Network() yHat = NN.forward(X) print("{}".format(yHat))
Run
Reset
Share
Import
Link
Embed
Language▼
English
中文
Python Fiddle
Python Cloud IDE
Follow @python_fiddle
Browser Version Not Supported
Due to Python Fiddle's reliance on advanced JavaScript techniques, older browsers might have problems running it correctly. Please download the latest version of your favourite browser.
Chrome 10+
Firefox 4+
Safari 5+
IE 10+
Let me try anyway!
url:
Go
Python Snippet
Stackoverflow Question