感知机实现与门,与非门,或门,异或门

article/2025/10/8 12:10:25

感知机:

感知机接收多个输入信号,输出一个信号。这里所说的“信号”可以想象成电流或河流那样具备“流动性”的东西。像电流流过导线,向前方输送电子一样,感知机的信号也会形成流,向前方输送信息。但是,和实际的电流不同的是,感知机的信号只有“流/不流”(1/0)两种取值。
在这里插入图片描述
其中x1、x2是输入信号,y是输出信号,w1、w2是权重(w是weight的首字母)。图中的○称为“神经元”或者“节点”。输入信号被送往神经元时,会被分别乘以固定的权重(w1x1、w2x2)。神经元会计算传送过来的信号的总和,只有当这个总和超过了某个界限值时,才会输出1。这也称为“神经元被激活”。这里将这个界限值称为阈值,用符号θ表示。用数学表达式表达如下:
在这里插入图片描述
感知机的多个输入信号都有各自固有的权重,这些权重发挥着控制各个信号的重要性的作用。也就是说,权重越大,对应该权重的信号的重要性就越高。

导入权重和偏置:

我们用感知机实现与门,实际就是确定w1,w2,θ的值。满足与门上述数学表达式的w1,w2,θ有很多种。这里我们取(w1, w2, θ) = (0.5, 0.5, 0.7)用python简单实现一下与门。

def AND(x1, x2):w1, w2, theta = 0.5, 0.5, 0.7tmp = x1 * w1 + x2 * w2if tmp <= theta:return 0elif tmp > theta:return 1print('AND(0,0)=%d' % (AND(0, 0)))
print('AND(1,0)=%d' % (AND(1, 0)))
print('AND(0,1)=%d' % (AND(0, 1)))
print('AND(1,1)=%d' % (AND(1, 1)))

运行结果如下:
在这里插入图片描述

刚才的与门的实现比较直接、容易理解,但是考虑到以后的事情,我们将其修改为另外一种实现形式。首先把数学表达式的θ换成−b。
请添加图片描述
此处,b称为偏置,w1和w2称为权重。感知机会计算输入信号和权重的乘积,然后加上偏置,如果这个值大于0则输出1,否则输出0。与之前数学表达式表达的内容完全相同。下面我们就用使用权重和偏置实现与门,与非门,或门,异或门。

与门:

import numpy as npdef AND(x1, x2):x = np.array([x1, x2])w = np.array([0.5, 0.5])b = -0.7tmp = np.sum(w * x) + bif tmp <= 0:return 0else:return 1print('AND(0,0)=%d' % (AND(0, 0)))
print('AND(1,0)=%d' % (AND(1, 0)))
print('AND(0,1)=%d' % (AND(0, 1)))
print('AND(1,1)=%d' % (AND(1, 1)))

与非门:

import numpy as npdef NAND(x1, x2):x = np.array([x1, x2])w = np.array([-0.5, -0.5]) # 仅权重和偏置与AND不同!b = 0.7tmp = np.sum(w*x) + bif tmp <= 0:return 0else:return 1print('NAND(0,0)=%d' % (NAND(0, 0)))
print('NAND(1,0)=%d' % (NAND(1, 0)))
print('NAND(0,1)=%d' % (NAND(0, 1)))
print('NAND(1,1)=%d' % (NAND(1, 1)))

或门:

import numpy as npdef OR(x1, x2):x = np.array([x1, x2])w = np.array([0.5, 0.5]) # 仅权重和偏置与AND不同!b = -0.2tmp = np.sum(w*x) + bif tmp <= 0:return 0else:return 1print('OR(0,0)=%d' % (OR(0, 0)))
print('OR(1,0)=%d' % (OR(1, 0)))
print('OR(0,1)=%d' % (OR(0, 1)))
print('OR(1,1)=%d' % (OR(1, 1)))

异或门:

异或门无法用单层感知机实现,我们可以使用前面实现的与门,与非门,或门构建多层感知机实现。

import numpy as npdef AND(x1, x2):x = np.array([x1, x2])w = np.array([0.5, 0.5])b = -0.7tmp = np.sum(w * x) + bif tmp <= 0:return 0else:return 1def NAND(x1, x2):x = np.array([x1, x2])w = np.array([-0.5, -0.5]) # 仅权重和偏置与AND不同!b = 0.7tmp = np.sum(w*x) + bif tmp <= 0:return 0else:return 1def OR(x1, x2):x = np.array([x1, x2])w = np.array([0.5, 0.5]) # 仅权重和偏置与AND不同!b = -0.2tmp = np.sum(w*x) + bif tmp <= 0:return 0else:return 1def XOR(x1, x2):s1 = NAND(x1, x2)s2 = OR(x1, x2)y = AND(s1, s2)return yprint('XOR(0,0)=%d' % (XOR(0, 0)))
print('XOR(1,0)=%d' % (XOR(1, 0)))
print('XOR(0,1)=%d' % (XOR(0, 1)))
print('XOR(1,1)=%d' % (XOR(1, 1)))

多层感知机(在理论上)可以表示计算机。


http://chatgpt.dhexx.cn/article/B4g90nV6.shtml

相关文章

逻辑门图解—与门、或门、非门、与非门、或非门、异或门、同或门

逻辑门图解 一&#xff1a;与门——(且 A&&B)二&#xff1a;或门——(或 A || B)三&#xff1a;非门——(非 !A)四&#xff1a;与非门 ——!(A&&B)五&#xff1a;或非门——!(A||B)六&#xff1a;异或门七&#xff1a;同或门 一&#xff1a;与门——(且 A&…

与或非等运算

与运算(&)&#xff0c;按位与 双目运算。二个位都置位(等于1)时&#xff0c;结果等于1&#xff0c;其它的结果都等于0。 1 & 1 1 1 & 0 0 0 & 1 0 0 & 0 0 && 表示逻辑与的意思&#xff0c;即为and。当运算符两边的表达式的结果都为true时&am…

LoRaWAN数据包分析工具

前言&#xff1a;LoRaWAN的射频数据包是加密的&#xff0c;而且有些字段是某个字节的某几位&#xff0c;看着不是那么直观&#xff0c;因此在某些情况下需要借助工具来分析数据包。 1、安装npm 这个工具是用JavaScript写的&#xff0c;其中用到了一些依赖库&#xff0c;而npm…

DHCP数据包分析

一.实验目的 掌握DHCP协议的工作原理及相关数据包的结构。 二.实验拓扑 三.实验工具 GNS3和Wireshark抓包分析软件 四.DHCP协议的封装格式 五.DHCP的作用和图解 1&#xff09;作用&#xff1a;DHCP&#xff08; Dynamic Host Configuration Protocol, 动态主机配置协议&am…

Wireshark 合并数据包

简述 本文主要介绍如何使用wireshark合并数据包。当前使用的wireshark版本为3.6.8。 合并数据包 先使用wireshark打开待合并数据包的其中之一&#xff0c;然后从文件菜单中选择合并选项&#xff1a; 合并完成后&#xff0c;需要保存文件才能继续合并。 其中合并选项的意思是&a…

数据包简介

1 数据包的组装和拆解 2 链路层封包格式 目标地址&#xff1a;目标mac地址 源地址&#xff1a;源mac地址 类型&#xff1a;确定以太网头后面跟的是哪个协议 注意&#xff1a; 1.IEEE802.2/802.3封装常用在无线 2.以太网封装常用在有线局域网 3 网络层、数据层封包格式 4 网络应…

OSPF数据包

OSPF数据包格式及首部 OSPF的数据包格式 OSPF数据包是直接跨层封装到三层的 OSPF数据包首部 OSPF数据包首部共有24个字节;Version:OSPF的版本号,IPV4为OSPFV2,IPV6为OSPFV3;Type:OSPF数据包类型(Hello,DBD,LSR,LSU,LSack);Packet Lenth:OSPF数据包长度;Router ID:发出OSPF数…

使用Python构造数据包

一、socket函数 1、socket函数参数及方法 1&#xff09;参数 Python 中&#xff0c;用 socket&#xff08;&#xff09;函数来创建套接字&#xff0c;语法格式如下 socket.socket([family[, type[, proto]]]) family: 套接字家族可以使 AF_UNIX 或者 AF_INET。 type: 套接字…

30、IP数据包结构

本节来学习IP数据包的结构&#xff0c;前面我们一直在说数据包&#xff0c;IP数据包是网络层的PDU。PDU的概念我们在本专栏第2节的内容中谈到过&#xff0c;忘记了就赶快去复习。数据包也被称为“IP数据报”或者“IP分组”&#xff0c;这三个概念是通用的&#xff0c;到任何一本…

ipv4数据包结构

第一行&#xff1a; 1.version&#xff0c;IP协议版本号&#xff0c;代表IPV4,大小为4个bit 2.IHL&#xff0c;代表IP包头的大小&#xff0c;大小为4个bit&#xff08;其中一个bit代表32bit&#xff09;&#xff0c;IHL最小值为4最大值为15&#xff0c;所以IPV4大小在20个字节…

scapy定制数据包详解

今天继续给大家介绍渗透测试相关知识&#xff0c;本文主要内容是scapy定制数据包详解。 免责声明&#xff1a; 本文所介绍的内容仅做学习交流使用&#xff0c;严禁利用文中技术进行非法行为&#xff0c;否则造成一切严重后果自负&#xff01; 一、scapy介绍 scapy是一个可以让…

OSPF——数据包

OSPF的数据包协议 OSPF协议是一个跨四层封装协议&#xff0c;三层协议号为 — 89 OSPF头部内容 版本 — OSPF的版本 — 在ipv4网络环境下&#xff0c;一般使用OSPFV2&#xff0c;所以&#xff0c;对应的版本字段为2 类型 — OSPF数据包的类型 hello — 1 DBD — 2 LSR — 3 LS…

IPV4数据包

IPV4数据包: 中文版本: 共6行,每一行是32个bit,也就是4个字节。 Version:版本 所占空间4bit 默认值为0100 IHL: ip header length ip头部长度 4bit ip包头一般来说是20字节 最后一行options和padding在默认的ipv4数据包中是空的 Ihl中每一个数值的单位是32bit 默认值0101…

IP数据包格式

目录 网络层功能 ICMP协议 ICMP作用 ICMP功能 冲突域 广播域 arp协议 工作原理 网络层功能 定义了基于 IP 协议的逻辑地址&#xff0c;就是 ip 地址 连接不同的媒介类型 选择数据通过网络的最佳路径&#xff0c;完成逻辑地址寻址 数据封装的时候在网络层会封装 ip 地址…

linux网络数据包流程

一、介绍 对于调试linux网卡驱动或者wifi驱动性能&#xff0c;或者排查网络数据丢包的时候&#xff0c;需要对内核处理包要与基本的了解&#xff0c;从而排查出丢包出现在哪个环节&#xff0c;这里给出大致流程和常用排查方法 二、基本框架 1、硬件连接 1&#xff09;以太网口…

篡改数据包

工具简介 BurpSuite&#xff1a;是一个用于测试 Web 应用程序安全性的图形化工具。该工具使用Java编写&#xff0c;由PortSwigger Web Security开发。 功能 模块 HTTP代理它作为一个 Web 代理服务器运行&#xff0c;并且位于浏览器和目标 Web 服务器之间。这允许拦截、检查和…

数据包覆盖Android,安卓数据包怎么安装 安卓游戏数据包安装教程

安卓数据包怎么安装?安卓数据包放在哪?这是很多安卓单机游戏爱好者经常问的问题,下面小编就为各位玩家带来:安卓游戏数据包安装教程,诸如数据包存放好后,为什么还是不能正常玩都能为您解答~ 安卓数据包怎么安装? 在回答这个问题之前玩家们应该知道,数据包分为两种,一种…

数据包解析

数据包解析 数据包理解七层协议详解OSI七层协议中每一层的特征数据包解析如何改变文本的样式TCP数据包结构&#xff1a; 数据包理解 从专业的角度来说&#xff0c;(网络协议)OSI就是一个开放的通信系统互联参考模型&#xff0c;也是一个定义的很好的协议规范。OSI模型有7层结构…

HTTP数据包详解

1. HTTP报文格式 HTTP由请求和响应两部分组成&#xff0c;所以对应的也有两种报文格式。下面分别介绍HTTP请求报文格式和HTTP响应报文格式。 HTTP请求报文格式 以上表格中&#xff0c;第1行为“请求行”&#xff0c;第2、3、4行为“请求头部”&#xff0c;第5行为空行&#xff…

python构造数据包库_scapy构造数据包

一、进入scapy交互界面 在终端下输入:scapy ,进入交互界面: 二、查看scapy已经实现的网络协议 ls()         列出scapy中已实现的网络协议 ls(协议类型)     查看某个协议头部字段格式 lsc()        列出scapy中可以使用的命令或函数,比如嗅探时,我们经常…