deep learning入门:感知机

权重和偏置

与门公式

import numpy as np

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

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

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

print(NAND(0,0), NAND(0,1), NAND(1,0), NAND(1,1))

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

print(OR(0,0), OR(0,1), OR(1,0), OR(1,1))

与门 与非门 或门

EkH7MF.jpg

异或门

EkHWan.jpg

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

print(XOR(0,0), XOR(0,1), XOR(1,0), XOR(1,1))

小结

  • 感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值

  • 感知机将权重和偏置设定为参数

  • 使用感知机可以表示与和或门等逻辑电路

  • 异或门无法通过单层感知机来表示,可以使用2层感知机来表示

  • 单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。

  • 多层感知机(理论上)可以表示计算机

posted @ 2019-04-22 22:09  Draymonder  阅读(209)  评论(0编辑  收藏  举报