图像处理与计算机视觉--第七章-神经网络-单层感知器

news/2024/7/21 7:27:59 标签: 图像处理, 计算机视觉, 神经网络

文章目录

  • 1.单层感知器原理介绍
  • 2.单层感知器算法流程
  • 3.单层感知器算法实现
  • 4.单层感知器效果展示
  • 5.参考文章与致谢

1.单层感知器原理介绍

    1.单层感知器是感知器中最简单的一种,有单个神经元组成的单层感知器只能用于解决线性可分的二分性问题
    2.在空间中如果输入的数据是可分的,感知器相当于将输入的数据在空间中分为两类,已经证明,如果线性可分则算法一定收敛。
    3.单层感知器是指只有一层处理单元的感知器,其中输入层没有处理数据的能力,输入层有n个神经元结点,每个结点接受一个输入信号xi,输入层与输出层之前
      有权重w,将每个结点组成的输入矩阵和权值矩阵相乘,得到一个数,将这个数作为净输入传递给神经元细胞,再将净输入代入神经元细胞的激活函数中,并且在
      神经元中还有一个外部偏置b,激活函数在这里一般采用符号函数,然后输出一个数。

  下图是一个简单的感知器模型图:

             在这里插入图片描述
  在输出层的每一个节点上接受来自输入层的加权和作为输出层的净输入如下所示:
n e t j ′ = ∑ i = 1 n w i j x i \mathrm{net}_{j}^{\prime}=\sum_{i=1}^{n}w_{ij}x_{i} netj=i=1nwijxi
输出的值由激活函数决定:
y = s g n ( ∑ i = 1 N ω i x i + b ) y=\mathrm{sgn}\Bigg(\sum_{i=1}^N\omega_ix_i+b\Bigg) y=sgn(i=1Nωixi+b)

2.单层感知器算法流程

  单层感知器算法的流程如下所示:
在这里插入图片描述

算法注意事项:
1.L1为一类,L2为另一类,单层感知器只能解决二分类的一般问题。
2.beta表示学习率,它的值决定了误差对权值的影响大小,值不应该过大,以便为输入向量提供一个比较稳定的权值估计;值也不能过小,
3.收敛终止条件:
   1.当权值向量已经能正确实现分类时,算法就收敛终止。
   2.计算时收敛条件通常是:
         (1)理想值和计算得出的值得差小于一个提前的误差阈值。
         (2)权值两次变化的值小于一个提前设定的误差阈值。
         (3)设定一个最大迭代数M,达到这个值,即使没有完成,也必须收敛。

3.单层感知器算法实现

"""
@单层感知器的实现
created by ZhongYan Zeng
2023/10/9/14/09
"""
#单层感知器
import numpy as np
import matplotlib.pyplot as plt
# 支持中文
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
#2.更新函数
def update_weight(X,Y,W,beta,iteration):
    iteration=iteration+1
    y=np.dot(X,W)
    result_sgn=np.sign(y)
    w_delta=beta*((Y-result_sgn).dot(X))
    W=W+w_delta
    return W,iteration
#3.迭代求解过程
def sovle_iteration(X,d,w,beta,iteration,iteration_max):
    for i in range(iteration_max):
        w,iteration=update_weight(X,d,w,beta,iteration)
        print(w)
        print(iteration)
        result=np.sign(np.dot(X,w))
        if(result==d).all():
            print("完成")
            print("迭代次数:",iteration)
            break
    return w,iteration
def draw_picture(w,iteration):
    k=-w[1]/w[2]
    b=-w[0]/w[2]
    print("斜率k=",k)
    print("截距b=",b)
    print("线性表达式:y={:.2f}x+{:.2f}".format(k,b))
    k=round(k,2)
    b=round(b,2)
    #可视化绘图
    x=[2,4,5]
    y=[3,3,8]
    fun_x=np.linspace(0,9,100)
    fun_y=k*fun_x+b
    plt.plot(fun_x,fun_y,color='r',label='y=1.{}x+{}'.format(k,b))
    plt.scatter(x[0:2],y[0:2],color='b')
    plt.scatter(x[2],y[2],color='y')
    plt.xlim(0,9)
    plt.ylim(0,15)
    plt.legend()
    plt.title("单层感知器分类结果图")
    plt.show()

if __name__=='__main__':
    #1.定义参数和变量
    X=np.array([[1,2,3],[1,4,3],[1,5,8]])#第一项为偏置项1
    d=np.array([1,1,-1])#期望感知器分类结果
    beta=0.1#学习率为0.1
    iteration=0#迭代次数为0
    w=(np.random.random(3)-0.5)*2
    iteration_max=100
    w,iteration=sovle_iteration(X,d,w,beta,iteration,iteration_max)
    draw_picture(w,iteration)

4.单层感知器效果展示

                     在这里插入图片描述
在这里插入图片描述

5.参考文章与致谢

本章内容的完成离不开大佬文章的启发和帮助,在这里列出名单,如果对于内容还有不懂的,可以移步对应的文章进行进一步的理解分析。
1.单层感知器以及python实现:https://blog.csdn.net/qq_42633819/article/details/81588084
如果大家这这篇blog中有什么不明白的可以去他的专栏里面看看,内容非常全面,应该能够有比较好的解答。
在文章的最后再次表达由衷的感谢!!

http://www.niftyadmin.cn/n/5075182.html

相关文章

分类预测 | MATLAB实现KOA-CNN-LSTM开普勒算法优化卷积长短期记忆神经网络数据分类预测

分类预测 | MATLAB实现KOA-CNN-LSTM开普勒算法优化卷积长短期记忆神经网络数据分类预测 目录 分类预测 | MATLAB实现KOA-CNN-LSTM开普勒算法优化卷积长短期记忆神经网络数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.MATLAB实现KOA-CNN-LSTM开普勒算法优化…

flink redis connector需要防止包冲突

1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 <dependency><groupId>org.apache.bahir</groupId><artifactId

Nginx的安全控制

安全控制 关于web服务器的安全是比较大的一个话题&#xff0c;里面所涉及的内容很多&#xff0c;Nginx反向代理是安全隔离来提升web服务器的安全&#xff0c;通过代理分开了客户端到应用程序服务器端的连接&#xff0c;实现了安全措施。在反向代理之前设置防火墙&#xff0c;…

荧光染料AF405 acid,可用于研究材料的结构和性质

产品简介&#xff1a;AF405 acid是一种荧光染料。它具良好的荧光量子产率和较长的激发和发射波长&#xff0c;因此可应用于细胞成像和分析、蛋白质结构和功能研究等方面。 AF405 acid可以作为一种良好的荧光标记物&#xff0c;用于研究材料的结构和性质。此外&#xff0c;AF405…

R语言快速实现图片布局(1)

&#xff08;1&#xff09;简单的一排或者对称的多排&#xff0c;使用patchwork即可。/表示分行&#xff0c;|表示分列 library(patchwork) pp1<-ggplot(mtcars) geom_point(aes(mpg, disp)) pp2<-ggplot(mtcars) geom_boxplot(aes(gear, disp, group gear)) pp3 <…

Lambda表达式在C++中的定义

目录 背景介绍&#xff1a; Lambda表达式的定义&#xff1a; Lambda结构介绍&#xff1a; 1. Lambda capture 2. Lambda parameter list 3. Lambda mutable 4. Lambda return type 5. Lambda 主体 Lambda 表达式小结&#xff1a; Lambda 引用参考&#xff1a; 背景介…

CUDA学习笔记1——核函数与线程

CUDA安装并配置环境后&#xff0c;使用VS新建工程时会出现对应选项&#xff1a; CUDA核函数调用 CUDA核函数必须用限定词 global 修饰&#xff0c;返回类型必须为void&#xff0c;二者次序随意。函数名与()之间用三括号<<<网格大小&#xff0c;线程块大小>>&…

基于Python+Selenium的web自动化测试框架详解

简介 随着Web应用程序的广泛应用和不断发展&#xff0c;Web自动化测试已经成为软件质量保证中的一个重要环节。而PythonSelenium作为一组强大的工具和框架&#xff0c;已经成为Web自动化测试领域中的热门技术之一。PythonSelenium可以帮助我们快速、准确地模拟用户行为和操作&…