当前位置: 首页 > news >正文

HNU_多传感器(专选)_作业4(构建单层感知器实现分类)

1. (论述题)(共1题,100分)

假设平面坐标系上有四个点,要求构建单层感知器实现分类。

(3,3),(4,3) 两个点的标签为1;

(1,1),(0,2) 两个点的标签为-1。  

思路:要分类的数据是2维数据,需要2个输入节点,把神经元的偏置值也设置成一个节点(偏置也是一个输入,恒等于1),总共有3个输入节点。

输入数据有4组:

(1,3,3),(1,4,3),(1,1,1),(1,0,2)

对应的标签为(1,1,-1,-1) 

初始化权值w0,w1,w2取-1到1的随机数;

学习率设为0.11;

激活函数为sign函数。

我的答案:

1. 初始化:

  • (1)输入数据:X=[[1,3,3],[1,4,3],[1,1,1],[1,0,2]];
  • (2)标签:Y=[1,1,-1,-1]
  • (3)权值向量:W=[w0,w1,w2],随机在[-1,1]中;
  • (4)学习率:η= 0.11

2.激活函数:

  • sign(x) = 1 if x > 0 else -1

3.训练过程

  • (1)前向传播:神经元输出:

  • (2)计算误差:

  • (3)更新权值:

  • (4)若未达到“所有样本均正确分类/达到最大迭代次数”,则重复(1)~(3)

4.迭代过程:

可通过程序代码,进行迭代:(其中一次迭代如下):


初始权值: [ 0.58717924 -0.64675996  0.79238846]

=== 第 1 轮迭代 ===

样本: [1 1 1], 标签: -1, 预测: 1

权值更新量(eta * (Y[i] - y_pred) * X[i]): [-0.22 -0.22 -0.22]

更新后的权值: [ 0.36717924 -0.86675996  0.57238846]

样本: [1 0 2], 标签: -1, 预测: 1

权值更新量(eta * (Y[i] - y_pred) * X[i]): [-0.22 -0.   -0.44]

更新后的权值: [ 0.14717924 -0.86675996  0.13238846]

=== 第 2 轮迭代 ===

样本: [1 3 3], 标签: 1, 预测: -1

权值更新量(eta * (Y[i] - y_pred) * X[i]): [0.22 0.66 0.66]

更新后的权值: [ 0.36717924 -0.20675996  0.79238846]

样本: [1 1 1], 标签: -1, 预测: 1

权值更新量(eta * (Y[i] - y_pred) * X[i]): [-0.22 -0.22 -0.22]

更新后的权值: [ 0.14717924 -0.42675996  0.57238846]

样本: [1 0 2], 标签: -1, 预测: 1

权值更新量(eta * (Y[i] - y_pred) * X[i]): [-0.22 -0.   -0.44]

更新后的权值: [-0.07282076 -0.42675996  0.13238846]

=== 第 3 轮迭代 ===

样本: [1 3 3], 标签: 1, 预测: -1

权值更新量(eta * (Y[i] - y_pred) * X[i]): [0.22 0.66 0.66]

更新后的权值: [0.14717924 0.23324004 0.79238846]

样本: [1 1 1], 标签: -1, 预测: 1

权值更新量(eta * (Y[i] - y_pred) * X[i]): [-0.22 -0.22 -0.22]

更新后的权值: [-0.07282076  0.01324004  0.57238846]

样本: [1 0 2], 标签: -1, 预测: 1

权值更新量(eta * (Y[i] - y_pred) * X[i]): [-0.22 -0.   -0.44]

更新后的权值: [-0.29282076  0.01324004  0.13238846]

=== 第 4 轮迭代 ===

训练在第 4 轮收敛

训练后的权值: [-0.29282076  0.01324004  0.13238846]


import numpy as np# 数据
X = np.array([[1, 3, 3],[1, 4, 3],[1, 1, 1],[1, 0, 2]
])
Y = np.array([1, 1, -1, -1])# 初始化权值和参数
W = np.random.uniform(-1, 1, 3)  # 权值初始化
eta = 0.11  # 学习率
max_epochs = 100  # 最大迭代次数# 激活函数
def sign(x):return 1 if x > 0 else -1# 训练
print("初始权值:", W)
for epoch in range(max_epochs):print(f"\n=== 第 {epoch + 1} 轮迭代 ===")errors = 0for i in range(len(X)):# 前向传播y_pred = sign(np.dot(X[i], W))# 检查预测是否正确if y_pred != Y[i]:errors += 1delta_W = eta * (Y[i] - y_pred) * X[i]  # 计算权值更新量W += delta_W  # 更新权值# 打印更新信息print(f"样本: {X[i]}, 标签: {Y[i]}, 预测: {y_pred}")print(f"权值更新量(eta * (Y[i] - y_pred) * X[i]): {delta_W}")print(f"更新后的权值: {W}")if errors == 0:  # 如果没有错误分类print(f"训练在第 {epoch + 1} 轮收敛")break
else:print("未在最大迭代次数内收敛")print("\n训练后的权值:", W)

相关文章:

HNU_多传感器(专选)_作业4(构建单层感知器实现分类)

1. (论述题)(共1题,100分) 假设平面坐标系上有四个点,要求构建单层感知器实现分类。 (3,3),(4,3) 两个点的标签为1; (1,1),(0,2) 两个点的标签为-1。 思路:要分类的数据是2维数据,需要2个输入…...

以太网链路详情

文章目录 1、交换机1、常见的概念1、冲突域2、广播域3、以太网卡1、以太网卡帧 4、mac地址1、mac地址表示2、mac地址分类3、mac地址转换为二进制 2、交换机的工作原理1、mac地址表2、交换机三种数据帧处理行为3、为什么会泛洪4、转发5、丢弃 3、mac表怎么获得4、同网段数据通信…...

vue3 setup语法,子组件点击一个元素打印了这个元素的下标id,怎么传递给父组件,让父组件去使用

问: vue3 setup语法,子组件点击一个元素打印了这个元素的下标id,怎么传递给父组件,让父组件去使用 回答: 在 Vue 3 中,你可以使用 setup 语法糖和组合式 API 来实现子组件向父组件传递数据。具体来说&am…...

《Keras3 minist 手写数字AI模型训练22秒精度达到:0.97》

《Keras3 minist 手写数字AI模型训练22秒精度达到:0.97》 一、修改源码加上如下两条代码二、源码修改如下三、Keras3 minist 训练22秒结束,训练过程截图四、Keras3 minist 源码截图 一、修改源码加上如下两条代码 import os os.environ["KERAS_BAC…...

【.net core】【sqlsugar】大数据写入配置(需要版本5.0.45)

官网连接 https://www.donet5.com/home/Doc?typeId2404 泛型方法 /// <summary> /// 大数据写入&#xff08;泛型方法&#xff09; /// </summary> /// <param name"entitys"></param> /// <returns></returns> ///代码中_d…...

ansible运维实战

通过学习ansible自动化运维&#xff0c;初步对ansible有了一定的了解&#xff0c;此次分享两个案例&#xff0c;希望对大家有所帮助 案例一&#xff1a;自动化安装nginx 本次案例目的是ansible自动化安装nginx并配置 首先创建如图所示目录 在主机上安装好nginx&#xff0c;如…...

DDOS分布式拒绝服务攻击

DDOS分布式拒绝服务攻击 简单来说 传统的DOS就是一台或者多台服务对一个受害目标&#xff08;服务器&#xff0c;路由&#xff0c;ip&#xff0c;国家&#xff09;进行攻击&#xff0c;当范围过大时就是DDOS。目的就是通过大规模的网络流量使得正常流量不能访问受害目标&…...

如何使用 Python 实现 UDP 通信?

1. UDP通信基础 UDP&#xff08;用户数据报协议&#xff09;是一种无连接的传输层协议&#xff0c;它提供了一种不可靠的数据传输服务&#xff0c;但具有较低的延迟和较小的开销。在Python中&#xff0c;可以使用socket模块来实现UDP通信。 2. 实现UDP服务端 import socketd…...

MTK 配置文件梳理

文章目录 MTK 日常配置总结屏幕默认横竖屏显示ro.build.characteristics 属性修改修改点一&#xff1a;build\core\product_config.mk修改点二&#xff1a;build\make\core\main.mk修改是否成功&#xff0c;adb 验证 配置部分系统app handheld_product.mk配置系统属性、第三方应…...

论文笔记:Treat Visual Tokens as Text? But Your MLLM Only Needs Fewer Efforts to See

2024 10月的arxiv 1 主要idea 针对多模态大模型&#xff08;如LLaVA&#xff09;&#xff0c;提出了一系列高效的剪枝策略 在显著降低计算开销&#xff08;多达 88%&#xff09;的同时&#xff0c;保持了模型在多模态任务中的性能表现 2 目前的问题 与文本 token 相比&…...

软考高级架构 —— 10.6 大型网站系统架构演化实例 + 软件架构维护

10.6 大型网站系统架构演化实例 大型网站的技术挑战主要来自于庞大的用户&#xff0c;高并发的访问和海量的数据&#xff0c;主要解决这类问题。 1. 单体架构 特点: 所有资源&#xff08;应用程序、数据库、文件&#xff09;集中在一台服务器上。适用场景: 小型网站&am…...

2024美赛数学建模C题:网球比赛中的动量,用马尔可夫链求解!详细分析

文末获取历年美赛数学建模论文&#xff0c;交流思路模型 接下来讲解马尔可夫链在2024年C题中的运用 1. 马尔科夫链的基本原理 马尔科夫链是描述随机过程的一种数学模型&#xff0c;其核心特征是无记忆性。 简单来说&#xff0c;系统在某一时刻的状态只取决于当前状态&#x…...

23种设计模式之状态模式

目录 1. 简介2. 代码2.1 State &#xff08;定义抽象状态接口&#xff09;2.2 StartState &#xff08;实现具体状态类&#xff09;2.3 EndState &#xff08;实现具体状态类&#xff09;2.4 Context &#xff08;定义上下文类&#xff09;2.5 Test &#xff08;测试类&#xf…...

Elasticsearch Serverless 中的数据流自动分片

作者&#xff1a;来自 Elastic Andrei Dan 在 Elastic Cloud Serverless 中&#xff0c;我们根据索引负载自动为数据流配置最佳分片数量&#xff0c;从而使用户无需摆弄分片。 传统上&#xff0c;用户会更改数据流的分片配置&#xff0c;以处理各种工作负载并充分利用可用资源。…...

YOLOv10改进,YOLOv10添加U-Netv2分割网络中SDI信息融合模块+GSConv卷积,助力小目标

理论介绍 完成本篇需要参考以下两篇文章,并已添加到YOLOv10代码中 YOLOv10改进,YOLOv10添加U-Netv2分割网络中SDI信息融合模块,助力小目标检测YOLOv10改进,YOLOv10添加GSConv卷积+Slim-neck,助力小目标检测,二次创新C2f结构下文都是手把手教程,跟着操作即可添加成功 目…...

xshell连接虚拟机,更换网络模式:NAT->桥接模式

NAT模式&#xff1a;虚拟机通过宿主机的网络访问外网。优点在于不需要手动配置IP地址和子网掩码&#xff0c;只要宿主机能够访问网络&#xff0c;虚拟机也能够访问。对外部网络而言&#xff0c;它看到的是宿主机的IP地址&#xff0c;而不是虚拟机的IP。但是&#xff0c;宿主机可…...

sql的where条件中使用case when

场景&#xff1a; 1、使用oracle数据库&#xff0c;数据类型为number&#xff0c;需要正无穷值。 2、数据表中有两个金额值&#xff0c;最大值和最小值&#xff0c; 如10~20&#xff0c; 30 ~40&#xff0c;40以上&#xff0c;数据库中这样设计 id name min max 1 j 10 20 2 …...

MacOS 上以源码形式安装 MySQL 5.7

以下是在 macOS 上从源码安装 MySQL 5.7 的步骤&#xff1a; 前置条件 安装 Homebrew&#xff1a;如果你还没有安装 Homebrew&#xff0c;可以在终端中运行以下命令进行安装&#xff1a; /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install…...

MySQL 事务隔离级别详解

一、事务的基本概念 &#xff08;一&#xff09;什么是事务 事务是一个逻辑工作单元&#xff0c;由一组数据库操作组成。这些操作要么全部成功执行&#xff0c;要么全部回滚&#xff0c;以确保数据库的一致性。事务具有以下四个特性&#xff0c;通常被称为 ACID 特性&#xff…...

C语言——高精度问题

1、高精度计算的本质&#xff1a;竖式计算&#xff1b; 2、适用解决超出long long int 范围的大整数计算 #include<stdio.h> #include<string.h> #define N 100 char str1[N4]{0},str2[N4]{0}; int arr1[N4]{0},arr2[N4]{0}; int ans[N5]{0};//将字符串转化成整型…...

Vim 调用外部命令学习笔记

Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...

接口测试中缓存处理策略

在接口测试中&#xff0c;缓存处理策略是一个关键环节&#xff0c;直接影响测试结果的准确性和可靠性。合理的缓存处理策略能够确保测试环境的一致性&#xff0c;避免因缓存数据导致的测试偏差。以下是接口测试中常见的缓存处理策略及其详细说明&#xff1a; 一、缓存处理的核…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

大话软工笔记—需求分析概述

需求分析&#xff0c;就是要对需求调研收集到的资料信息逐个地进行拆分、研究&#xff0c;从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要&#xff0c;后续设计的依据主要来自于需求分析的成果&#xff0c;包括: 项目的目的…...

多场景 OkHttpClient 管理器 - Android 网络通信解决方案

下面是一个完整的 Android 实现&#xff0c;展示如何创建和管理多个 OkHttpClient 实例&#xff0c;分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

sqlserver 根据指定字符 解析拼接字符串

DECLARE LotNo NVARCHAR(50)A,B,C DECLARE xml XML ( SELECT <x> REPLACE(LotNo, ,, </x><x>) </x> ) DECLARE ErrorCode NVARCHAR(50) -- 提取 XML 中的值 SELECT value x.value(., VARCHAR(MAX))…...

Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信

文章目录 Linux C语言网络编程详细入门教程&#xff1a;如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket&#xff08;服务端和客户端都要&#xff09;2. 绑定本地地址和端口&#x…...

接口自动化测试:HttpRunner基础

相关文档 HttpRunner V3.x中文文档 HttpRunner 用户指南 使用HttpRunner 3.x实现接口自动化测试 HttpRunner介绍 HttpRunner 是一个开源的 API 测试工具&#xff0c;支持 HTTP(S)/HTTP2/WebSocket/RPC 等网络协议&#xff0c;涵盖接口测试、性能测试、数字体验监测等测试类型…...

Rust 开发环境搭建

环境搭建 1、开发工具RustRover 或者vs code 2、Cygwin64 安装 https://cygwin.com/install.html 在工具终端执行&#xff1a; rustup toolchain install stable-x86_64-pc-windows-gnu rustup default stable-x86_64-pc-windows-gnu ​ 2、Hello World fn main() { println…...