最新文�? 原创 : u-boot (3) —— spl 原创 : MIPI 系列之 D-PHY 原创 : MIPI 系列之 DSI 原创 : MIPI 系列之 DPI 原创 : MIPI 系列之 DBI
机器学习 历史版本:
上次修改时间:
机器学习基础概念 历史版本:
上次修改时间: 2021-01-27 11:59:40
决策树ID3 历史版本:
上次修改时间: 2021-01-21 00:54:49
非参数模型-KNN 历史版本:
上次修改时间: 2021-01-21 00:54:49
boost 集成学习 历史版本:
上次修改时间: 2021-01-21 00:54:49
先验概率后验概率和贝叶斯公式 历史版本:
上次修改时间: 2021-01-21 00:54:49
分类问题-决策树 历史版本:
上次修改时间: 2021-01-21 00:54:49
机器学习应用场景 历史版本:
上次修改时间: 2021-01-21 00:54:49
SVM 支持向量机算法 历史版本:
上次修改时间: 2021-01-21 00:54:49
逻辑回归 历史版本:
上次修改时间: 2022-03-03 10:50:45
线性回归 历史版本:
上次修改时间: 2021-01-21 00:54:49
机器学习和神经网络的异同总结 历史版本:
上次修改时间: 2021-01-21 00:54:49
神经网络 历史版本:
上次修改时间: 2021-01-21 16:46:45
反向传播的推导过程-转 历史版本:
上次修改时间: 2021-01-21 00:54:49
监督学习的基础 历史版本:
上次修改时间: 2021-01-21 00:54:49
特征提取阶段-->数据标注-->模型选择-->模型训练-->模型验证-->模型测试。\n#### 学习的本质:\n```\n学习的本质: 通过观察总结出定律来解释不同的情况。\n学习的目标: 模型的泛化-对模型新输入的解释能力,精确度-对训练产生的ω的精确度验证。\n风险: 模型在训练集上的好的表现并不能保证泛化是正确的,因此需要极其谨慎的估计这个模型的性能。\n```\n#### 原始数据的处理\n这部分称为特征工程,需要对原始数据的先验知识,详情见[特征工程](https://www.testingcloud.club/wapi/NewUi/article/257/%E7%89%B9%E5%BE%81%E5%B7%A5%E7%A8%8B-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%89%8D%E7%9A%84%E5%85%A5%E9%97%A8%E8%AF%BE%E7%A8%8B)\n#### 模型的构建\n在监督学习中有两大类构建模型的方法:\n- 生成方法\n生成方法构建模型使用贝叶斯公式,即: 后验=先验x似然性。在建模过程中,先为不同类型的y构建不同的类条件概率p(x|y),比如有毒的蘑菇,他具有各个外形的概率是多少,那么给定一个新的特征x的时候,根据贝叶斯公式,分类y可以通过最大化后验概率得到,即:
\n![image.png](https://www.testingcloud.club/sapi/api/image_download/1b89aab4-4044-11eb-89a4-525400dc6cec.png)\n
\n实际上这种方法是尝试结果的生成过程,通过p(x|y)来建模。
\n- 判别方法\n判别方法就不需要尝试建模数据的生成过程,直接估计p(y|x),常见的判别方法的模型比如神经网络模型,SVM模型等等,判别的方法有很大的意义,因为生成方法很大程度上依赖于对特征的正确提取,如果特征不可分,而判别式方法不需要提取p(x|y),因此他并不需要知道某个特征如何产生这个输出,也就是说,不懂得该领域的人,也可以成为专家,只需要有大量的数据。\n\n\n#### 学习的过程\n监督学习的方法用特征作为输入x构造一个估计函数y = f(x),将输入和输出y关联起来,同时,对于其中的可调试参数ω也作为因变量,变成y = f(ω,x),学习追求的目标是: 最小化和泛化。\n- 最小化误差函数。\n- 泛化y使得尽可能满足所有的已知x,并使得这个函数能够根据x来预测y。\n\n误差函数可以表示为 ferr(w,x) = y(标注结果) - y(预测结果),对于可微的误差函数,最小化误差函数变成了一个数学上常见的优化问题,可以用梯度下降的方法来解释,在神经网络中,基于激活函数的逻辑回归,也采用该方法,称为前向传播。
\n\n#### 学习参数的选择\n上面学习的描述,讲的仅仅是对训练集上某个性能度量(误差函数)的优化,但是这仅仅是最关键的指标,实际上可调参数的个数ω也会对学习结果产生影响,而这个个数无法通过学习去裁剪他。
\n如果模型的可调参数ω的个数很多,可以确实提高模型在训练集上的准确率,甚至达到零误差,但是在新的数据上,往往会一塌糊涂,由于可调参数ω的选择引起的问题主要有以下几点:\n- 参数过少的模型因为较大的偏差而失准,因为缺乏灵活性。\n- 参数过多因为过大的方差失准,因为它们对样本数据太过于敏感(细节改变导致模型变化太大)。\n- 因此找到最佳的模型,需要控制模型复杂度,并不是模型可调参数ω做的越多越好,实际上带来的只是更多的计算量和更差的效果,因为测试集上表现得越完美,不在测试集里面的数据,反而会表现出越大的偏差。\n\n#### 学习的评估\n评估学习的目标: 1.泛化能力。 2. 准确性。
\n泛化能力的评估要看模型对测试集以外的数据的准确率。
\n而准确性要看模型对测试集本身的准确性。
\n为了验证不同的指标,学习集也要划分为,训练集,验证集,测试集。
\n训练集用于调整参数,而验证集用于对模型进行验证测试,测试集仅仅在最终测试的时候使用一次。
\n在输入的数据量固定时,如何划分这三种数据也变得十分关键:
\n常见的划分方法是交叉验证,交叉验证将样本平均分为k份子样本,其中k-1个子样本用于训练,还有一个子样本用于测试,这个过程重复k次,将各次的结果平均计算出一个估计值,保证每个子样本仅仅有一次作为测试数据,这种方法就是,每个子样本都当过训练数据,也当过一次测试数据。
\n\n**不要试图在训练集上去验证,因此这就无法测试模型的泛化能力了。**
\n#### 如何表示误差\n根据模型的输出结果的类型不同而定,比如minist数字识别中的混淆矩阵:
\n![image.png](https://www.testingcloud.club/sapi/api/image_download/4f2d3987-4049-11eb-89a4-525400dc6cec.png)
\n对角线表示正确被识别出的样本。\n\n#### \n### 引用\n《机器学习与优化》 -- 罗伯托.巴蒂 -->
学习模型的分类和异同和常见模型 历史版本:
上次修改时间: 2021-01-21 00:54:49
通用线性模型 历史版本:
上次修改时间: 2021-01-21 00:54:49
概率图模型 历史版本:
上次修改时间: 2021-04-20 09:57:03
KNN 历史版本:
上次修改时间: 2022-01-27 16:26:31
随机森林 历史版本:
上次修改时间: 2022-01-27 17:01:59
GloVe 历史版本:
上次修改时间: 2022-01-27 21:09:45
EM算法 历史版本:
上次修改时间: 2022-01-27 21:24:50
决策树 历史版本:
上次修改时间: 2022-01-27 22:45:06
svm 历史版本:
上次修改时间: 2022-02-08 10:19:37
马尔可夫网络 历史版本:
上次修改时间: 2022-02-08 10:22:19
聚类算法 历史版本:
上次修改时间: 2022-02-08 10:22:16
迁移学习 历史版本:
上次修改时间: 2022-02-08 10:48:51
Focal Loss、正/负样本、难/易分样本 历史版本:
上次修改时间: 2023-10-15 11:04:37
模型量化算法原理 历史版本:
上次修改时间: 2024-07-19 15:05:05
int8)一般都会有精度损失,而反量化(int8-->float32)一般没有信息损失,float32 能保存的数值范围本身就比 uint8 多,因此必定有大量数值无法用 uint8 表示,只能四舍五入成 uint8 型的数值,量化模型和全精度模型的误差也来自四舍五入的 clip 操作\n\n量化的好处包括以下几个方面:\n- 更少的存储开销及带宽需求(float32-->8bit 一般会有 4 倍的模型压缩及内存带宽的提升)\n- 更快的计算速度(对大多数处理器而言,整型运算的速度一般比浮点运算快)\n- 更低的功耗和占用面积,省电费(很多硬件设备,内存访问是主要能耗)\n\n\n![image.png](https://www.testingcloud.club/sapi/api/image_download/db068342-4597-11ef-8483-00163e13fc6a.png)\n\n
\n\n\n量化分类: 目前学术界的量化方法都过于花俏,能落地的极少,工业界广泛使用有如下两种:
\n- 后训练量化(Post Training Quantization): 使用 KL 散度、滑动平均等方法确定量化参数且不需要重新训练的定点量化方法\n- 量化感知训练(Quantization Aware Training): 训练过程中对量化进行建模以确定量化参数,它与 Post Training Quantization 模式相比可以提供更高的预测精度(利用 z直通估计器-STE 进行量化重训,解决部分量化算子为0,网络无法更新的问题)\n\n\n量化处理流程:
\n\n![image.png](https://www.testingcloud.club/sapi/api/image_download/f0cece10-4597-11ef-8483-00163e13fc6a.png)\n\n
\n\n#### 二、量化原理\n\n##### 1、线性量化公式\n\n常见的线性量化过程可用如下公式表示:
\n\n![image.png](https://www.testingcloud.club/sapi/api/image_download/fe583bfe-4597-11ef-8483-00163e13fc6a.png)\n\n
\n\n其中,$R$ 表示真实的浮点值,$Q$ 表示量化后的定点值,$Z$ 表示浮点值 $0$ 对应的量化定点值,$S$则为量化的缩放因子(整数和实数的比例),我们要做的就是确定合适的$S$ 和 $Z$ 后进行量化处理
\n反量化公式如下:
\n\n![image.png](https://www.testingcloud.club/sapi/api/image_download/2c26858e-4598-11ef-8483-00163e13fc6a.png)\n\n
\n\n##### 线性量化分类\n根据 $Z$ 是否为 $Q$,可将线性量化分为两类:对称量化(max-abs 量化)和非对称量化(min-max 量化)
\n\n\n对称量化(max-abs 量化):
\n\n![image.png](https://www.testingcloud.club/sapi/api/image_download/595135b1-4598-11ef-8483-00163e13fc6a.png)\n\n
\n\n在对称量化中,$Q$是用有符号整型数值来表示的,此时$Z=0$,且$R=0$时,恰有$Q =0$,此时缩放因子$S$ 可取:\n\n
\n\n![image.png](https://www.testingcloud.club/sapi/api/image_download/7b8386f3-4598-11ef-8483-00163e13fc6a.png)\n\n
\n\n其中,n 为量化后数值的位宽,x 表示浮点样本的值\n
\n\n\n非对称量化(min-max 量化):
\n\n![image.png](https://www.testingcloud.club/sapi/api/image_download/911816fe-4598-11ef-8483-00163e13fc6a.png)\n\n
\n\n在非对称量化中,$Q$ 是用无符号整型数值来表示的,此时![image.png](https://www.testingcloud.club/sapi/api/image_download/a7de36fa-4598-11ef-8483-00163e13fc6a.png) ,此时缩放因子 $S$ 和 偏移量 $Z$ 可取:
\n\n![image.png](https://www.testingcloud.club/sapi/api/image_download/b4d99413-4598-11ef-8483-00163e13fc6a.png)\n\n
\n\n其中,n 为量化后数值的位宽,x 表示浮点样本的值\n##### 线性量化的粒度\n\n- 逐层量化:以层为单位,整个 layer 共用一组缩放因子 $S$ 和偏移量 $Z$ ,通常对激活做逐层量化\n- 逐通道量化:以通道为单位,每个 channel 使用一组缩放因子 $S$ 和偏移量 $Z$,通常对权重做逐通道量化\n- 逐组量化:以组为单位,每个 group 使用一组缩放因子 $S$ 和偏移量 $Z$,当 group = 1 时,逐组量化与逐层量化等价,当 group = num_filters 时,逐组量化与逐通道量化等价\n\n\n##### 三、SNPE 量化简介\n\nDefault Quantization Mode\n\n```\n--bias_bitwidth=\n\nselect the bitwidth to use when quantizing the biases, either 8 (default) or 32\nUsing 32 bit biases may sometimes provide a small improvement in accuracy. Can’t mix with --bitwidth\n--weights_bitwidth=\n\nselect the bitwidth to use when quantizing the weights, either 8 (default) or 16\n8w/16a is only supported by the HTA currently. Can’t mix with --bitwidth\n--bias_bitwidth=\n\nselect the bitwidth to use when quantizing the activations, either 8 (default) or 16\n8w/16a is only supported by the HTA currently. Can’t mix with --bitwidth\n--weights_bitwidth=\n\nselect the bitwidth to use when quantizing the weights/activation/bias, either 8 (default) or 16\nCan’t mix with --weights_bitwidth or --act_bitwidth or --bias_bitdwith\n\n```\n\n默认量化方式采用的是:非对称量化(min-max 量化),原理如下:
\n\n首先,从输入浮点数据(R)中得到最小值和最大值(差值要大于 0.01),计算缩放因子(S )
\n其次,调整上一步浮点的最小值和最大值为 encoding-min(表示定点 0) 和 encoding-max(表示定点 255),使得浮点的 0 能够精确的表示
\n输入全是正数,如 [ 5.0 , 10.0 ] [5.0, 10.0][5.0,10.0], encoding-min 设置为 0, encoding-max 为 10.0
\n\n输入全是负数,如 [ − 20.0 , − 6.0 ] [-20.0, -6.0][−20.0,−6.0] , encoding-max设置为 0,encoding-min 为 -20.0
\n\n输入既有正数又有负数,如 [ − 5.1 , 5.1 ] [-5.1, 5.1][−5.1,5.1],缩放因子 S 为 255 / 10.2 = 25 255/10.2=25255/10.2=25,偏移量 Z 为 − 25 ∗ − 5.1 = 127.5 -25*-5.1=127.5−25∗−5.1=127.5,不为正数,偏移量取 Round 后是 128,反推回去encoding-min 变为 128 / ( − 25 ) = − 5.12 128/(-25) = 5.12128/(−25)=−5.12,为保证最大值和最小值差值不变,encoding-max 调整为 5.08 5.085.08
\n最后,根据根据公式 $Q=Round(S∗R+Z)$进行量化处理得到量化后的数据
\n\n\n```\n# 量化示例 Q = Round(S * R + Z)\ninput values = [-1.8, -1.0, 0, 0.5]\n缩放因子: S = 255 / (0.5 + 1.8) = 110.869565\n偏移量: Z = -110.869565 * (-1.8) = 199,565217,Round(Z) = 200\n反推回去: encoding-min = 200 / (-110.869565) = -1.803922\n最大值和最小值差值不变:encoding-max = 2.3 - 1.803922 = 0.496078\n-1.8 量化后的定点值为:0\n-1.0 量化后的定点值为:Round(-1.0*110.869565 + 200) = 89\n 0 量化后的定点值为:200\n 0.5 量化后的定点值为:255\nquantized values are [0, 89, 200, 255] \n\n\n# 反量化示例 R = (Q - Z) / S\nquantized values = [0, 89, 200, 255] \n 0 反量化后的浮点值为:(0- 200) / 110.869565 = -1.8039\n 89 反量化后的浮点值为:(89 - 200) / 110.869565 = -1.0012\n200 反量化后的浮点值为:0.0000\n255 反量化后的浮点值为:(255 - 200) / 110.869565 = 0.4961\n\n``` -->
0条评�?
全部评论

关于博主

an actually real engineer

通信工程专业毕业,7年开发经验

技术栈:

精通c/c++

精通golang

熟悉常见的脚本,js,lua,python,php

熟悉电路基础,嵌入式,单片机

耕耘领域:

服务端开发

嵌入式开发

git

>

gin接口代码CURD生成工具

sql ddl to struct and markdown,将sql表自动化生成代码内对应的结构体和markdown表格格式,节省宝贵的时间。

输入ddl:
输出代码:

qt .ui文件转css文件

duilib xml 自动生成绑定控件代码

协议调试器

基于lua虚拟机的的协议调试器软件 支持的协议有:

串口

tcp客户端/服务端

udp 组播/udp节点

tcp websocket 客户端/服务端

软件界面

使用例子: 通过脚本来获得接收到的数据并写入文件和展示在界面上

下载地址和源码

duilib版本源码 qt qml版本源码 二进制包

webrtc easy demo

webrtc c++ native 库 demo 实现功能:

基于QT

webrtc摄像头/桌面捕获功能

opengl渲染/多播放窗格管理

janus meeting room

下载地址和源码

源码 二进制包

wifi,蓝牙 - 无线开关

实现功能:

通过wifi/蓝牙实现远程开关电器或者其他电子设备

电路原理图:

实物图:

深度学习验证工具

vtk+pcl 点云编辑工具

实现功能:

1. 点云文件加载显示(.pcd obj stl)

2. 点云重建

3. 点云三角化

4. 点云缩放

下载地址:

源码 二进制包

虚拟示波器

硬件实物图:

实现原理

基本性能

采集频率: 取决于外部adc模块和ebaz4205矿板的以太网接口速率,最高可以达到100M/8 约为12.5MPS

上位机实现功能: 采集,显示波形,存储wave文件。

参数可运行时配置

上位机:

显示缓冲区大小可调

刷新率可调节

触发显示刷新可调节

进程守护工具

基本功能:

1. 守护进程,被守护程序崩溃后自动重启。

2. 进程输出获取,显示在编辑框中。

二进制包

openblt 烧录工具

基本功能:

1. 加载openblt 文件,下载到具有openblt bootloader 运行的单片机中。

二进制包

opencv 功能验证工具(开源项目二次开发)

基本功能:

1. 插件化图像处理流程,支持自定义图像处理流程。 2. 完善的日志和权限管理

二进制包

又一个modbus调试工具

最近混迹物联网企业,发现目前缺少一个简易可用的modbus调试工具,本软件旨在为开发者提供一个简单modbus测试工具。
主打一个代码简单易修改。
特点:

1. 基于QT5

2. 基于libmodbus

3. 三方库完全跨平台,linux/windows。

二进制包

屏幕录制工具

1. 基于QT5

2. 基于ffmpeg

3. 支持自定义录屏

源代码

开源plutosdr 板卡

1. 完全开源

2. 提高固件定制服务

3. 硬件售价450 手焊产量有线

测试数据

内部DDS回环测试

接收测试

外部发送500MHZ FM波形

硬件原理图

matlab测试

2TRX版本

大部分plutosdr应用场景都是讲plutosdr板卡作为射频收发器来使用。
实际上plutosdr板卡本身运行linux 操作系统。是具有一定脱机运算的能力。 对于一些微型频谱检测,简单射频信号收发等应用完全可以将应用层直接实现在板卡上
相较于通过网卡或者USB口传输具有更稳定,带宽更高等优点。
本开源板卡由于了SD卡启动,较原版pluto支持了自定义启动应用的功能。
提供了应用层开发SDK(编译器,buildroot文件系统)。
通过usb连接电脑,经过RNDIS驱动可以近似为通过网卡连接
(支持固件的开发定制)。

二次开发例子

``` all:
arm-linux-gnueabihf-gcc -mfloat-abi=hard --sysroot=/root/v0.32_2trx/buildroot/output/staging -std=gnu99 -g -o pluto_stream ad9361-iiostream.c -lpthread -liio -lm -Wall -Wextra -lrt
clean:
rm pluto_stream

bsdiff算法补丁生成器

1. 官方bsdiff算法例子自带bzip压缩方式

2. 本例子没有压缩,直接生成补丁文件

3. 图形化界面基于DUILIB

二进制文件

版面分析即分析出图片内的具体文件元素,如文档标题,文档内容,文档页码等,本工具基于cnstd模型

Base64 Image

. 闽ICP备19002644号