2 位二进制输入或非门感知器算法的实现
在机器学习领域,感知器是一种用于二进制分类器的监督学习算法。感知器模型实现以下功能:
对于权重向量和偏差参数的特定选择,模型预测相应输入向量的输出。
2 位二进制变量 的 NOR 逻辑函数真值表,即输入向量和相应的输出–
Zero | Zero | one |
Zero | one | Zero |
one | Zero | Zero |
one | one | Zero |
我们可以观察到, 现在对于输入向量到 or 节点的对应权重向量,关联的感知器函数可以定义为:
稍后,或节点的输出是权重为的非节点的输入。那么相应的输出就是或非门逻辑函数的最终输出,相关的感知器函数可以定义为:
为实现,考虑的权重参数为,偏差参数为。
Python 实现:
# importing Python library
import numpy as np
# define Unit Step Function
def unitStep(v):
if v >= 0:
return 1
else:
return 0
# design Perceptron Model
def perceptronModel(x, w, b):
v = np.dot(w, x) + b
y = unitStep(v)
return y
# NOT Logic Function
# wNOT = -1, bNOT = 0.5
def NOT_logicFunction(x):
wNOT = -1
bNOT = 0.5
return perceptronModel(x, wNOT, bNOT)
# OR Logic Function
# w1 = 1, w2 = 1, bOR = -0.5
def OR_logicFunction(x):
w = np.array([1, 1])
bOR = -0.5
return perceptronModel(x, w, bOR)
# NOR Logic Function
# with OR and NOT
# function calls in sequence
def NOR_logicFunction(x):
output_OR = OR_logicFunction(x)
output_NOT = NOT_logicFunction(output_OR)
return output_NOT
# testing the Perceptron Model
test1 = np.array([0, 1])
test2 = np.array([1, 1])
test3 = np.array([0, 0])
test4 = np.array([1, 0])
print("NOR({}, {}) = {}".format(0, 1, NOR_logicFunction(test1)))
print("NOR({}, {}) = {}".format(1, 1, NOR_logicFunction(test2)))
print("NOR({}, {}) = {}".format(0, 0, NOR_logicFunction(test3)))
print("NOR({}, {}) = {}".format(1, 0, NOR_logicFunction(test4)))
Output:
NOR(0, 1) = 0
NOR(1, 1) = 0
NOR(0, 0) = 1
NOR(1, 0) = 0
这里,根据 2 位二进制输入的真值表,每个测试输入的模型预测输出()与或非门常规输出()完全匹配。 验证了或非门感知器算法的正确实现。
版权属于:月萌API www.moonapi.com,转载请注明出处