深度学习(神经网络)[1] —— 单层感知器

  • 算法描述
  • python实现
  • 示例运行结果
  • 可视化

算法描述

最原始的神经网络模型,类似于神经网络中的单个神经元,该算法局限性也很大,只适用于解决线性可分的问题,对于线性不可分的问题和异或问题则无法解决。但作为神经网络的基本单元,学习和理解单层感知器,对后续的学习是很有帮助的。

python实现

# ************************** Perception ******************
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
class CyrusPerception(object):def __init__(self,**kargs):self.X = Noneself.Y = Noneself.W = Noneself.output = Noneif "epoch" in kargs.keys():self.epoch = kargs["epoch"]else:self.epoch = 1000if "lr" in kargs.keys():self.lr = kargs["lr"]else:self.lr = 0.1def fit(self,X,Y,**kargs):self.X = np.hstack((np.ones((np.array(X).shape[0],1)),np.array(X)))self.Y = np.array(Y).reshape(-1,1)# 1、初始化权值if "W" in kargs.keys():self.W = kargs["W"]else:self.W = (np.random.random([self.X.shape[1],1])-0.5)*2# 2、更新权值for i in range(self.epoch):self.update_w()print("*"*20)print("epoch:",i+1)print("w:",self.W)if (self.Y == self.output).all():print("*"*20)print("Finihed")print("epoch",self.epoch)breakdef update_w(self):self.output = np.sign(self.X.dot(self.W)).reshape(-1,1)self.W += self.lr*(self.X.T.dot(self.Y - self.output))/int(self.X.shape[0])
if __name__ == "__main__":model = CyrusPerception()x = [[3,3],[4,3],[1,1],[0,2]]y = [1,1,-1,-1]model.fit(x,y)# 绘图k = -model.W[1]/model.W[2]b = -model.W[0]/model.W[2]x_lineal = np.array([0,5])y_lineal = k*x_lineal + bplt.figure()colors = "rgb"[plt.scatter(x[i][0],x[i][1],color = colors[y[i]]) for i in range(len(x))]plt.plot(x_lineal,y_lineal,color = "r")plt.show()

示例运行结果

********************
epoch: 1
w: [[-0.31672519][-0.16285498][ 0.19094236]]
********************
epoch: 2
w: [[-0.26672519][ 0.18714502][ 0.39094236]]
********************
epoch: 3
w: [[-0.36672519][ 0.13714502][ 0.24094236]]
********************
epoch: 4
w: [[-0.46672519][ 0.08714502][ 0.09094236]]
********************
epoch: 5
w: [[-0.46672519][ 0.08714502][ 0.09094236]]
********************
Finihed
epoch 1000

可视化


by CyrusMay 2020 05 05

当烟雾随晨光飘散
枕畔的湖已风干
期待已退化成等待
而我告别了突然

——五月天(后青春期的诗)——

深度学习(神经网络)[1]——单层感知器相关推荐

  1. 【深度学习】1:感知器原理,以及感知器解决异或问题

    前言: 写完上一篇<KNN算法实现手写数字识别>到现在已经过去了十天,2018年伊始几天同学同事都是各种浪,自己坚持学习实在是痛苦啊! 不悲不气,闲话不多说了,开始自己神经网络的学习旅程吧 ...

  2. 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...

    1单层感知器概述单层感知器(Single Layer Perceptron)是最简单的神经网络.它包含输入层和输出层,而输入层和输出层是直接相连的.单层感知器属于感知器中最简单的一种分类器,属于机器学 ...

  3. 零基础入门深度学习 | 第一章:感知器

    北京 | 高性能计算之GPU CUDA课程11月24-26日3天密集学习 快速带你晋级阅读全文> 无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作 ...

  4. 【深度学习BookNote】多层感知器(multi-layer perceptron)

    多层感知器(multi-layer perceptron) 神经网络的变种目前有很多,如误差反向传播(Back Propagation,BP)神经网路.概率神经网络.卷积神经网络(Convolutio ...

  5. 深度学习笔记整理2 - 感知器算法

    深度学习 基本概念 深度学习是机器学习算法中的一类,其源于人工神经网络的研究. 深度学习广泛应用在计算机视觉,音频处理,自然语言处理等诸多领域. 深度可以理解为数据计算转换的层数. 机器学习& ...

  6. 神经网络 - 用单层感知器实现多个神经元的分类 - (Matlab建模)

    训练样本矩阵: P = [0.1  0.7  0.8  0.8  1.0  0.3  0.0  –0.3  –0.5  –1.5; 1.2  1.8  1.6  0.6  0.8  0.5  0.2  ...

  7. 入门深度学习(一)感知器

    感知器(神经元) 以下即为一个感知器 一个感知器有如下组成部分: 输入权值 一个感知器可以接收多个输入,每个输入上有一个权值,此外还有一个偏置项,就是上图中的w0. 激活函数 输出 感知器的输出由下面 ...

  8. 深度学习 神经网络 神经元 单层神经网络的实现

    使用 tensorflow1.14, 数据集 cifar10 代码 初始化 数据集一览 数据预处理 构建模型图 神经元 单层神经网络 注意点 other 代码 初始化 import tensorflo ...

  9. 图解深度学习-神经网络

    深度学习 深度学习是一种统计学习方法,可以在大量数据中自动提取关键特征信息. 深度学习的分类 深度学习的起源有感知器和基于图模型的玻尔兹曼机.在这两个的基础上引入多层结构形成了现在的深度学习. 神经网 ...

最新文章

  1. [Tips on Ember 2] 如何尝试 angle-bracket component
  2. Redis 命令--Redis列表(List))
  3. 一文整理IEEE问题汇总【IEEE PDF Checker】(更新中)
  4. 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言——1107:校门外的树
  5. metasploit 使用search报错
  6. firebase连接不上_如何在Firebase上托管Blazor应用程序
  7. github比sourceforge好在哪?
  8. Mysql多表关联删除操作
  9. 系统待办事项设计_B端产品工作台设计详解
  10. Java多线程之同步与阻塞队列
  11. 罗技g502鼠标使用感受,以及与g402的对比体验
  12. java 判定1个IP地址是否是合法IP
  13. 虚拟账户 FTP 服务器不能上传可下载
  14. aqs clh java_并发编程——详解 AQS CLH 锁
  15. 计算机桌面图标出现蓝框,win10桌面快捷图标蓝框怎么去除 附黑色方块去除/白色方块修复的方法步骤...
  16. Python 操控手机 APP
  17. 视频播放器(一):流程
  18. 从简单工厂到抽象工厂
  19. C语言100题练习计划 27——字符串替换
  20. Vue 3 中 v-if 和 v-show 指令实现的原理(源码分析)

热门文章

  1. Java线程详解(18)-障碍器
  2. Spring Boot 启动加载数据 CommandLineRunner
  3. Android --- 刚刚进入 Activity 页面的时候无法打开对话框,报错 Unable to add window -- token null is not valid; is your
  4. 图说数据中心新风节能技术
  5. Html画布w3c,HTML canvas 标签
  6. 成功解决but is 0 and 2 (computed from start 0 and end 9223372 over shape with rank 2 and stride-1)
  7. 成功解决ImportError: cannot import name ‘ft2font‘ from ‘matplotlib‘
  8. 成功解决preprocessing\label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous.
  9. Py之nltk:nltk包的简介、安装、使用方法、代码实现之详细攻略
  10. 成功解决Not possible to connect to the Web3 provider. Make sure the provider is running and a connection