在神经网络入门回顾(感知器、多层感知器)中整理了关于感知器和多层感知器的理论,这里实现关于与门、与非门、或门、异或门的代码,以便对感知器有更好的感觉。
此外,我们使用 pytest 框架进行测试。
pip install pytest
与门、与非门、或门
通过一层感知器就可以实现与门、与非门、或门。
先写测试代码 test_perception.py:
1 from perception importand_operate, nand_operate, or_operate2
3
4 deftest_and_operate():5 """
6 测试与门7 :return:8 """
9 assert and_operate(1, 1) == 1
10 assert and_operate(1, 0) ==011 assert and_operate(0, 1) ==012 assert and_operate(0, 0) ==013
14
15 deftest_nand_operate():16 """
17 测试与非门18 :return:19 """
20 assert nand_operate(1, 1) ==021 assert nand_operate(1, 0) == 1
22 assert nand_operate(0, 1) == 1
23 assert nand_operate(0, 0) == 1
24
25
26 deftest_or_operate():27 """
28 测试或门29 :return:30 """
31 assert or_operate(1, 1) == 1
32 assert or_operate(1, 0) == 1
33 assert or_operate(0, 1) == 1
34 assert or_operate(0, 0) == 0
写完测试代码,后面直接输入命令 pytest -v 即可测试代码。
这三个门的权重和偏置是根据人的直觉或者画图得到的,并且不是唯一的。以下是简单的实现,在 perception.py 中写上:
1 importnumpy as np2
3
4 defstep_fu