[Profundidade] perceptron de aprendizagem (Perceptron)

notas de estudo pessoais, amigos que estão interessados ​​pode consultar.

1. A máquina descrita percebida

Perceptron (perceptron) proposto pelo estudioso americano Frank Rosenblatt em 1957 para vir. É a origem de um algoritmo de rede neural (aprendizagem de profundidade), a
estrutura de aprendizagem que é percebido de aprendizado de máquina e redes neurais leva a um estudo profundo do pensamento importante

Detectar uma pluralidade de sinais de entrada recebe, emite um sinal. FIG segue:

onde:

  • x1, x2 é o sinal de entrada, y é o sinal de saída
  • W1, W2 representa o peso
  • Figura ○, um representante de um "neurónio"
  • Pesado algoritmo (w1x1, w2x2) por um peso fixo, quando θ excede este limiar, representativo de uma saída de "neurónios foram activadas." 0 caso contrário, a favor de não activado,

Fórmula é a seguinte:

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

2. Perceptron resolver circuito de lógica simples, o problema com a porta.

Porta e verdade tabela é a seguinte:

O caso é que ambas as entradas são 1, a saída para ser 1.

Código é a seguinte:

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))

efeito de demonstração é como se segue:

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

A máquina de indução de camadas múltiplas, para resolver o porta XOR

XOR tabela verdade portão

você pode ver, a porta XOR com uma camada de nenhuma solução. Assim, podemos chegar a uma "sobreposição", uma estrutura multi-camada por. Para conseguir o efeito de porta XOR.

FIG segue:

código de implementação pode precisar de ser 与门, 非门, 与非门as funções são alcançados novamente. Pela realização de sua combinação 异或门(circuitos lógicos durante a aprendizagem universidade finalmente veio em um pequeno e prático)

Código é a seguinte:

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))

efeito de demonstração é como se segue:

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

Acho que você gosta

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