目录

一、基础理论

前向传递(得到输出y)

反向传递(更新权重w)

二、实现多数据分类

1、设置初始参数

2、训练

3、画图

3-1、画点

3-2、画线段

总代码


一、基础理论

这里只写公式,更加详细的可以看前篇CSDN

前向传递(得到输出y)

b是偏置

反向传递(更新权重w)

更新权重: 

二、实现多数据分类

1、设置初始参数

# 1、设置初始参数
# 输入                       #每一行对应一个标签
x = np.array([[1, 0, 2],    #(0,2)坐标[1, 1, 3],    #(1,3)坐标[1, 4, 2],    #(4,2)坐标[1, 5, 1]     #(5,1)坐标
])
# 初始权重(0~1的随机生产数)
w = np.random.random([3, 1])      #3行1列# 偏置
b = 1# 标签(正确标签,训练结束的目标)
true = np.array([              #每一行对应一个标签[-1],[-1],[ 1],[ 1]
])# 学习率
lr = 1

2、训练

注:dot是矩阵点乘,矩阵点乘要注意前者列后者行是否相等。

# 开始训练
for i in range(100):# 2、正向传播:计算输出yy = np.sign(np.dot(x, w)).astype(int)   #dot:矩阵乘法(x列==w行)print('epoch:', i)                      #迭代次数print('weight:', w)                     #权重print(y)                                #标签# 训练成功if (y == true).all():print('训练成功!')print('y = ', y)break# 3、反向传播:更新权重# 训练失败(更新权重)else:w += lr * np.dot(x.T, true-y)/x.shape[0]
# w:权重      lr:学习率      np.dot:矩阵点乘     true-y:差     x.T:x的转置     x.shape[0]:行数

3、画图

3-1、画点

# 4、画图
# 4-1、画点
# 正样本坐标
x1, y1 = [0,1], [2,3]   #坐标:(0,2), (1,3)
# 负样本坐标
x2, y2 = [4,5], [2,1]   #坐标:(4,2),(5,1)plt.scatter(x1, y1, c='b')  #点:(x1,y1)坐标,blue颜色
plt.scatter(x2, y2, c='g')  #点:(x2,y2)坐标,green颜色

3-2、画线段

# 4-2、画线段
# 定义线段两点的x坐标
line_x = (0, 6)# 计算线性方程的k和d:
# w0*x0+w1*x1+w2*x2 = 0
# 把x1、x2分别看作:x、y
# 可以得到:w0 + w1*x + w2*y = 0  -->  y = -w1/w2*x + -w0/w2  -->  k=-w1/w2, d=-w0/w2
# 线段两端点的y坐标
k = -w[1]/w[2]          #斜率
d = -w[0]/w[2]          #截距
line_y = k * line_x + d #y坐标#画线段(通过两个点)
plt.plot(line_x, line_y, 'r')   #r:redplt.show()

总代码

# 手写单层感知器(多数据分类)
import numpy as np
import matplotlib.pyplot as plt# 1、设置初始参数
# 输入                       #每一行对应一个标签
x = np.array([[1, 0, 2],    #(0,2)坐标[1, 1, 3],    #(1,3)坐标[1, 4, 2],    #(4,2)坐标[1, 5, 1]     #(5,1)坐标
])
# 初始权重(0~1的随机生产数)
w = np.random.random([3, 1])      #3行1列# 偏置
b = 1# 标签(正确标签,训练结束的目标)
true = np.array([              #每一行对应一个标签[-1],[-1],[ 1],[ 1]
])# 学习率
lr = 1# 开始训练
for i in range(100):# 2、正向传播:计算输出yy = np.sign(np.dot(x, w)).astype(int)   #dot:矩阵乘法(x列==w行)print('epoch:', i)                      #迭代次数print('weight:', w)                     #权重print(y)                                #标签# 训练成功if (y == true).all():print('训练成功!')print('y = ', y)break# 3、反向传播:更新权重# 训练失败(更新权重)else:w += lr * np.dot(x.T, true-y)/x.shape[0]
# w:权重      lr:学习率      np.dot:矩阵点乘     true-y:差     x.T:x的转置     x.shape[0]:行数# 4、画图
# 4-1、画点
# 正样本坐标
x1, y1 = [0,1], [2,3]   #坐标:(0,2), (1,3)
# 负样本坐标
x2, y2 = [4,5], [2,1]   #坐标:(4,2),(5,1)plt.scatter(x1, y1, c='b')  #点:(x1,y1)坐标,blue颜色
plt.scatter(x2, y2, c='g')  #点:(x2,y2)坐标,green颜色# 4-2、画线段
# 定义线段两点的x坐标
line_x = (0, 6)# 计算线性方程的k和d:
# w0*x0+w1*x1+w2*x2 = 0
# 把x1、x2分别看作:x、y
# 可以得到:w0 + w1*x + w2*y = 0  -->  y = -w1/w2*x + -w0/w2  -->  k=-w1/w2, d=-w0/w2
# 线段两端点的y坐标
k = -w[1]/w[2]          #斜率
d = -w[0]/w[2]          #截距
line_y = k * line_x + d #y坐标#画线段(通过两个点)
plt.plot(line_x, line_y, 'r')   #r:redplt.show()

深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

    深度学习(神经网络)[1] -- 单层感知器 算法描述 python实现 示例运行结果 可视化 算法描述 最原始的神经网络模型,类似于神经网络中的单个神经元,该算法局限性也很大,只适用于解决线性可分的 ...

  8. 深度学习--TensorFlow (1)单层感知器1 -- 实现单数据训练

    目录 一.基础理论 1.单词感知器介绍 2.单词感知器学习规则 前向传递(得到输出y) 反向传递(更新权重w) 二.实现单层感知器 1.初始参数设置 2.正向传播(得到输出y) 3. 反向传播(更新权 ...

  9. 从单层感知器到深度学习以及深度学习必知的框架

    从单层感知器到深度学习以及深度学习必知的框架 一 单层神经网络(感知器) 1.结构 下面来说明感知器模型. 在原来MP模型的"输入"位置添加神经元节点,标志其为"输入单元 ...

最新文章

  1. WiredTiger引擎编译 及 LT_PREREQ(2.2.6)问题解决
  2. 报错解决: error: this use of defined may not be portable
  3. 【深度学习】当YOLOv5遇见OpenVINO!
  4. 独立磁盘冗余阵列:RAID
  5. Scala 基础(7)—— 函数字面量和一等函数
  6. lede usb启动_OpenWrt LEDE 自动挂载USB U盘的方法
  7. 自定义错误页面 404.html
  8. 浙江服务器机房动环监控系统,一种基于组态王软件的服务器机房动环监控系统...
  9. centos误删除恢复
  10. python如何修改图片透明度_如何改变图像的不透明度
  11. matlab计算prc曲线auc面积,ROC曲线及其matlab实现ROC曲线的绘画
  12. Skyscrapers (easy version)
  13. linux卸载杀毒软件clama,centos 6 安装clamav杀毒软件查毒
  14. 云计算技术,主要包括哪些关键技术?
  15. dell win10忘记密码怎么办
  16. 【墙裂推荐】二维码生成器哪个好?
  17. html表格去除间距,table 去掉 td之间间距
  18. 使用python画K线图(蜡烛图)
  19. 想拥有一个自由时间的职业_如何以自由职业者的身份管理时间
  20. DEDECMS网站搬家到服务器上后台登陆验证码不显示问题

热门文章

  1. python 字符串格式化是打印不同类型更简单一些
  2. Android 弱网测试(小米手机切换3g和2g)
  3. Unknown host 'android.oa.com'. You may need to adjust the proxy settings in Gradle.
  4. C语言结构体篇 结构体
  5. DB2数据库常用语句
  6. 机器学习数学 — 初等函数求导
  7. css3之transition、transform、animation比较
  8. JS简单实现自定义右键菜单
  9. 太TM难看了,我自己都看不下去了
  10. python中ht_python – 解析HTSQL时处理语法歧义