Construir una red neuronal sencilla - Notas de Estudio

Construir una red neuronal sencilla - Notas de Estudio

prefacio

Construir una red neuronal clasificación binaria simple.
Una red de tres capas sencilla que comprende una capa de entrada, una capa oculta y la capa de salida. Retropropagación actualización iteración.

Software: PyCharm
versión de Python: 3.7

código

import numpy as np

class NeuralNetwork:
    def __init__(self):
        pass

    ##实现sigmode函数,同时通过True/False 来分别返回sigmode函数的导数和函数
    def sigmode(self, x, deriv=False):
        if deriv:
            return x * (1 - x)
        else:
            return 1 / (1 + np.exp(-x))

    ##开始训练,train_num训练次数
    def train(self, x, y, train_num):
        learn_rate = 1

        ##两层参数,随机生成
        self.w0 = 2 * np.random.random((x.shape[1], 4)) - 1
        self.w1 = 2 * np.random.random((4, 1)) - 1

        for i in range(train_num):
            ##前向传播
            layer0 = x
            layer1 = self.sigmode(np.dot(layer0, self.w0))
            layer2 = self.sigmode(np.dot(layer1, self.w1))

            ##反向传播
            layer2_error = y - layer2
            layer2_delta = layer2_error * self.sigmode(layer2, True)
            layer1_error = layer2_delta.dot(self.w1.T)
            layer1_delta = layer1_error * self.sigmode(layer1, True)

            self.w1 += learn_rate * layer1.T.dot(layer2_delta)
            self.w0 += learn_rate * layer0.T.dot(layer1_delta)

    ##测试
    def result(self, test):
        return np.round(self.sigmode(np.dot(self.sigmode(np.dot(test, self.w0)), self.w1)))


Publicado 63 artículos originales · ganado elogios 73 · Vistas a 70000 +

Supongo que te gusta

Origin blog.csdn.net/jjwwwww/article/details/92796998
Recomendado
Clasificación