权重和偏置
import numpy as np# 求x1 and x2def 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 1print(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 1print(NAND(0,0), NAND(0,1), NAND(1,0), NAND(1,1))# 求 x1 or x2def 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 1print(OR(0,0), OR(0,1), OR(1,0), OR(1,1))
与门 与非门 或门
异或门
# 求 x1 xor x2def XOR(x1, x2): s1 = NAND(x1, x2) s2 = OR(x1,x2) y = AND(s1,s2) return yprint(XOR(0,0), XOR(0,1), XOR(1,0), XOR(1,1))
小结
感知机是具有输入和输出的算法。给定一个输入后,将输出一个既定的值
感知机将权重和偏置设定为参数
使用感知机可以表示与和或门等逻辑电路
异或门无法通过单层感知机来表示,可以使用2层感知机来表示
单层感知机只能表示线性空间,而多层感知机可以表示非线性空间。
多层感知机(理论上)可以表示计算机