深度学习理论基础6-多层感知机

废话不多说,人生甜短,让我们立即开始多层感知机的学习吧。为了循环渐进的理解多层感知机,我们有必要再把门电路拿出来把玩一番。

这些是门电路的符号表示,我们马上就用。你随便记3秒钟就好。

吼吼,你是不是在想,难道这就是异或门?没错哦。这就是。不信你可以捋一下。

是不是经过翻过来调过去的验证,发现那果然是一个异或门的实现?吼吼,捋乱了也没关系。咱还有图。

第1层输入(与非门)        第1层输入(或门)        第2层输入(与门)

00经过与非门-->1         00经过或门-->0          得到10再经过与门--->0

10经过与非门-->1         10经过或门-->1          得到11再经过与门--->1

01经过与非门-->1         01经过或门-->1          得到11再经过与门--->1

11经过与非门-->0         11经过或门-->1          得到01再经过与门--->0

哦哦。这结果与上文里贴的异或门真值表一样一样的。这样的方法果然实现了异或门。

下面我们用代码实现一下

import numpy as np


#实现与门
def AND(x1,x2):
    x=np.array([x1,x2])
    w=np.array([0.5,0.5])
    b=-0.7
    tem=np.sum(x*w)+b
    return 1 if tem>0 else 0


#实现与非门
def NAND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5]) # 仅权重和偏置与AND不同!
    b = 0.7
    tem=np.sum(x*w)+b
    return 1 if tem>0 else 0


#实现或门
def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.2, 0.3]) # 仅权重和偏置与AND不同!
    b = -0.1
    tem=np.sum(x*w)+b
    return 1 if tem>0 else 0


#异或门实现
def XOR(x1,x2):
    s1=NAND(x1,x2)
    s2=OR(x1,x2)
    y=AND(s1,s2)
    return y

上面几个门,之前已经实现过来。这里只在XOR函数里做了很少的事情。

接下来验证一下

def main():
    print(XOR(0, 0),end='|')  # 输出0
    print(XOR(1, 0),end='|')  # 输出1
    print(XOR(0, 1),end='|')  # 输出1
    print(XOR(1, 1),end='|')  # 输出0
    print()


if __name__ == '__main__':
    main()

恭喜,我们得到了十分正确的结果。

多层感知机的表示呼之欲出了。上图。

看起来与门电路如此相像。它们是失散多年的兄弟吧!

--------结语--------

偷偷告诉你,多层感知机可以构造计算机。如果你足够聪明,淘宝买一堆电子元件,通过这些原理就可以制造计算机了。

下一节是(更加)激动人心的开始。因为我们要从感知机过度到神经网络。

猜你喜欢

转载自blog.csdn.net/qq_40878431/article/details/85387653