深度学习--TensorFlow (2)单层感知器2 -- 实现多数据分类
目录
一、基础理论
前向传递(得到输出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:感知器原理,以及感知器解决异或问题
前言: 写完上一篇<KNN算法实现手写数字识别>到现在已经过去了十天,2018年伊始几天同学同事都是各种浪,自己坚持学习实在是痛苦啊! 不悲不气,闲话不多说了,开始自己神经网络的学习旅程吧 ...
- 为什么在反向传播中感知器初始值不能为0_深度学习理论分享之——单层感知器简述...
1单层感知器概述单层感知器(Single Layer Perceptron)是最简单的神经网络.它包含输入层和输出层,而输入层和输出层是直接相连的.单层感知器属于感知器中最简单的一种分类器,属于机器学 ...
- 深度学习笔记整理2 - 感知器算法
深度学习 基本概念 深度学习是机器学习算法中的一类,其源于人工神经网络的研究. 深度学习广泛应用在计算机视觉,音频处理,自然语言处理等诸多领域. 深度可以理解为数据计算转换的层数. 机器学习& ...
- 零基础入门深度学习 | 第一章:感知器
北京 | 高性能计算之GPU CUDA课程11月24-26日3天密集学习 快速带你晋级阅读全文> 无论即将到来的是大数据时代还是人工智能时代,亦或是传统行业使用人工智能在云上处理大数据的时代,作 ...
- 【深度学习BookNote】多层感知器(multi-layer perceptron)
多层感知器(multi-layer perceptron) 神经网络的变种目前有很多,如误差反向传播(Back Propagation,BP)神经网路.概率神经网络.卷积神经网络(Convolutio ...
- 入门深度学习(一)感知器
感知器(神经元) 以下即为一个感知器 一个感知器有如下组成部分: 输入权值 一个感知器可以接收多个输入,每个输入上有一个权值,此外还有一个偏置项,就是上图中的w0. 激活函数 输出 感知器的输出由下面 ...
- 深度学习(神经网络)[1]——单层感知器
深度学习(神经网络)[1] -- 单层感知器 算法描述 python实现 示例运行结果 可视化 算法描述 最原始的神经网络模型,类似于神经网络中的单个神经元,该算法局限性也很大,只适用于解决线性可分的 ...
- 深度学习--TensorFlow (1)单层感知器1 -- 实现单数据训练
目录 一.基础理论 1.单词感知器介绍 2.单词感知器学习规则 前向传递(得到输出y) 反向传递(更新权重w) 二.实现单层感知器 1.初始参数设置 2.正向传播(得到输出y) 3. 反向传播(更新权 ...
- 从单层感知器到深度学习以及深度学习必知的框架
从单层感知器到深度学习以及深度学习必知的框架 一 单层神经网络(感知器) 1.结构 下面来说明感知器模型. 在原来MP模型的"输入"位置添加神经元节点,标志其为"输入单元 ...
最新文章
- WiredTiger引擎编译 及 LT_PREREQ(2.2.6)问题解决
- 报错解决: error: this use of defined may not be portable
- 【深度学习】当YOLOv5遇见OpenVINO!
- 独立磁盘冗余阵列:RAID
- Scala 基础(7)—— 函数字面量和一等函数
- lede usb启动_OpenWrt LEDE 自动挂载USB U盘的方法
- 自定义错误页面 404.html
- 浙江服务器机房动环监控系统,一种基于组态王软件的服务器机房动环监控系统...
- centos误删除恢复
- python如何修改图片透明度_如何改变图像的不透明度
- matlab计算prc曲线auc面积,ROC曲线及其matlab实现ROC曲线的绘画
- Skyscrapers (easy version)
- linux卸载杀毒软件clama,centos 6 安装clamav杀毒软件查毒
- 云计算技术,主要包括哪些关键技术?
- dell win10忘记密码怎么办
- 【墙裂推荐】二维码生成器哪个好?
- html表格去除间距,table 去掉 td之间间距
- 使用python画K线图(蜡烛图)
- 想拥有一个自由时间的职业_如何以自由职业者的身份管理时间
- DEDECMS网站搬家到服务器上后台登陆验证码不显示问题
热门文章
- python 字符串格式化是打印不同类型更简单一些
- Android 弱网测试(小米手机切换3g和2g)
- Unknown host 'android.oa.com'. You may need to adjust the proxy settings in Gradle.
- C语言结构体篇 结构体
- DB2数据库常用语句
- 机器学习数学 — 初等函数求导
- css3之transition、transform、animation比较
- JS简单实现自定义右键菜单
- 太TM难看了,我自己都看不下去了
- python中ht_python – 解析HTSQL时处理语法歧义