[Profundidad] perceptrón de aprendizaje (Perceptrón)

notas de estudio personales, los amigos que estén interesados ​​pueden referirse a.

1. La máquina descrita percibe

Perceptron (perceptron) propuesto por el profesor estadounidense Frank Rosenblatt en 1957 por venir. Es el origen de un algoritmo de red neuronal (aprendizaje profundo), la
estructura de aprendizaje que se percibe de aprendizaje automático y redes neuronales conduce a un profundo estudio del importante pensamiento

Detectando una pluralidad de señales de entrada recibe, da salida a una señal. La figura siguiente:

donde:

  • x1, x2 es la señal de entrada, y es la señal de salida
  • w1, w2 es el peso
  • Figura ○, un representante de un "neurona"
  • Pesada algoritmo (w1x1, w2x2) por un peso fijo, cuando θ supera este umbral, una salida representativa de "neuronas fueron activadas." 0 en caso contrario, en nombre de no se activa,

La fórmula es como sigue:

\ [Y = \ begin {casos} 0, (w1x1 + w2x2 <= θ) \\ 1, (w1x1 + w2x2> θ) \ end {casos} \]

2. Perceptrón resolver circuito lógico simple, el problema con la puerta.

Puerta y tabla de verdad es la siguiente:

El caso es que ambas entradas son 1, la salida sea 1.

Código es el siguiente:

def AND(x1,x2):
    w1,w2,theta =0.5,0.5,0.6
    tmp =x1*w1 +x2*w2
    if tmp <= theta:
        return 0
    elif tmp >theta:
        return 1

print(AND(0,0))
print(AND(1,0))
print(AND(0,1))
print(AND(1,1))

Efecto de demostración es la siguiente:

(zsdpy1) zsd@zsd-virtual-machine:~/ZAI$ python section04.py 
0
0
0
1

La máquina de inducción de múltiples capas, para resolver la puerta XOR

XOR tabla de verdad puerta

se puede ver, la puerta XOR con una capa de solución. Por lo que podemos llegar a una "superposición", una estructura de múltiples capas por. Para conseguir el efecto de la puerta XOR.

La figura siguiente:

código de aplicación puede ser necesario 与门, 非门, 与非门las funciones se logran de nuevo. Por la realización de su combinación 异或门(circuitos lógicos durante el aprendizaje universitario finalmente llegó en un pequeño y práctico)

Código es el siguiente:

import numpy as np

def AND(x1,x2):
    w1,w2,theta =0.5,0.5,0.6
    tmp =x1*w1 +x2*w2
    if tmp <= theta:
        return 0
    elif tmp >theta:
        return 1

def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b = -0.2
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1


def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b = 0.7
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    return y


if __name__ == '__main__':
    for xs in [(0, 0), (1, 0), (0, 1), (1, 1)]:
        y = XOR(xs[0], xs[1])
        print(str(xs) + " -> " + str(y))

Efecto de demostración es la siguiente:

(zsdpy1) zsd@zsd-virtual-machine:~/ZAI$ python section05.py 
(0, 0) -> 0
(1, 0) -> 1
(0, 1) -> 1
(1, 1) -> 0

Supongo que te gusta

Origin www.cnblogs.com/zhangshengdong/p/12613674.html
Recomendado
Clasificación