返回

DL之Perceptron:感知器(多层感知机/人工神经元)的原理之基于numpy定义2层感知机底层逻辑代码

发布时间:2022-11-16 05:34:11 345

 DL之Perceptron:感知器(多层感知机/人工神经元)的原理之基于numpy定义2层感知机底层逻辑代码(与门AND/与非门NAND/或门OR是)解决XOR异或问题daiding

目录

​​感知器(多层感知机/人工神经元)的原理之基于numpy定义2层感知机底层逻辑代码(与门AND/与非门NAND/或门OR是)解决XOR异或问题​​

​​设计思路​​

​​输出结果​​

​​代码实现​​


感知器(多层感知机/人工神经元)的原理之基于numpy定义2层感知机底层逻辑代码(与门AND/与非门NAND/或门OR是)解决XOR异或问题

设计思路

# 1、最初的感知机设计
      # 仅包含与门——即AND()函数:当输入的加权总和超过阈值时返回1,否则返回0
# 2、进阶的感知机设计:带有权重w、偏置b概念形式的三种门实现
            #(1)、与门、与非门、或门是具有相同构造的感知机,区别只在于权重参数的值。
            #(2)、w1、w2是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1 的程度)的参数。但是根据上下文,有时也会将b、w1、w2 这些参数统称为权重。
      # 2.1、设计AND门
      # 2.2、设计NAND门
            # 仅权重和偏置与AND不同!
      # 2.3、设计OR门
      # 2.4、利用两层感知机实现异或门
            #(1)、异或门是一种多层结构的神经网络。这里,将最左边的一列称为第0 层,中间的一列称为第1 层,最右边的一列称为第2层。

输出结果

P_AND(0, 0): 0
P_AND(1, 0): 0
P_AND(0, 1): 0
P_AND(1, 1): 1
XOR(0, 0): 0
XOR(1, 0): 1
XOR(0, 1): 1
XOR(1, 1): 0

代码实现

# DL之Perceptron:Perceptron感知器(感知机/多层感知机/人工神经元)的原理之基于numpy定义2层感知机底层逻辑代码(与门AND/与非门NAND/或门OR是)解决XOR异或问题之详细攻略



import numpy as np


# 1、最初的感知机设计
# 仅包含与门——即AND()函数:当输入的加权总和超过阈值时返回1,否则返回0
def P_AND(x1, x2):
w1, w2, theta = 0.5, 0.5, 0.7
tmp = x1*w1 + x2*w2
if tmp <= theta:
return 0
elif tmp > theta:
return 1

print('P_AND(0, 0):',P_AND(0, 0)) # 输出0
print('P_AND(1, 0):',P_AND(1, 0)) # 输出0
print('P_AND(0, 1):',P_AND(0, 1)) # 输出0
print('P_AND(1, 1):',P_AND(1, 1)) # 输出1


# 2、进阶的感知机设计:带有权重w、偏置b概念形式的三种门实现
#(1)、与门、与非门、或门是具有相同构造的感知机,区别只在于权重参数的值。
#(2)、w1、w2是控制输入信号的重要性的参数,而偏置是调整神经元被激活的容易程度(输出信号为1 的程度)的参数。但是根据上下文,有时也会将b、w1、w2 这些参数统称为权重。

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

# 2.2、设计NAND门
def NAND(x1, x2):
x = np.array([x1, x2])
w = np.array([-0.5, -0.5]) # 仅权重和偏置与AND不同!
b = 0.7
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1

# 2.3、设计OR门
def OR(x1, x2):
x = np.array([x1, x2])
w = np.array([0.5, 0.5]) # 仅权重和偏置与AND不同!
b = -0.2
tmp = np.sum(w*x) + b
if tmp <= 0:
return 0
else:
return 1


# 2.4、利用两层感知机实现异或门
#(1)、异或门是一种多层结构的神经网络。这里,将最左边的一列称为第0 层,中间的一列称为第1 层,最右边的一列称为第2层。
def XOR(x1, x2):
s1 = NAND(x1, x2)
s2 = OR(x1, x2)
y = AND(s1, s2)
return y


print('XOR(0, 0):',XOR(0, 0)) # 输出0
print('XOR(1, 0):',XOR(1, 0)) # 输出1
print('XOR(0, 1):',XOR(0, 1)) # 输出1
print('XOR(1, 1):',XOR(1, 1)) # 输出0
特别声明:以上内容(图片及文字)均为互联网收集或者用户上传发布,本站仅提供信息存储服务!如有侵权或有涉及法律问题请联系我们。
举报
评论区(0)
按点赞数排序
用户头像
精选文章
thumb 中国研究员首次曝光美国国安局顶级后门—“方程式组织”
thumb 俄乌线上战争,网络攻击弥漫着数字硝烟
thumb 从网络安全角度了解俄罗斯入侵乌克兰的相关事件时间线