Qt学习笔记1:信号和槽

来源:互联网 发布:淘宝怎么有流量 编辑:程序博客网 时间:2024/06/05 17:37

本博客记录Softmax 和SVM分类器的学习过程,欢迎学习交流。

目前解决图像分类问题,比较流行的方法是卷积神经网络上。这种方法主要有两部分组成:一个是评分函数(score function),它是原始图像数据到类别分值的映射。另一个是评分函数(loss function),它是用来量化预测分类标签的得分与真实标签之间一致性的。该方法可转化为一个最优化问题,在最优化过程中,将通过更新评分函数的参数来最小化损失函数值。

1.标准信号 标准槽

connect(&b1,SIGNAL(pressed()),this,SLOT(close()));

1.线性分类器
这里写图片描述

2.理解线性分类器
线性分类器计算图像中3个颜色通道中所有像素的值与权重的矩阵乘,从而得到分类分值。根据我们对权重设置的值,对于图像中的某些位置的某些颜色,函数表现出喜好或者厌恶(根据每个权重的符号而定)。举个例子,可以想象“船”分类就是被大量的蓝色所包围(对应的就是水)。那么“船”分类器在蓝色通道上的权重就有很多的正权重(它们的出现提高了“船”分类的分值),而在绿色和红色通道上的权重为负的就比较多(它们的出现降低了“船”分类的分值)。
这里写图片描述

一个将图像映射到分类分值的例子。为了便于可视化,假设图像只有4个像素(都是黑白像素,这里不考虑RGB通道),有3个分类(红色代表猫,绿色代表狗,蓝色代表船,注意,这里的红、绿和蓝3种颜色仅代表分类,和RGB通道没有关系)。首先将图像像素拉伸为一个列向量,与W进行矩阵乘,然后得到各个分类的分值。需要注意的是,这个W一点也不好:猫分类的分值非常低。从上图来看,算法倒是觉得这个图像是一只狗。

3.将图像看做高维度的点

既然图像被伸展成为了一个高维度的列向量,那么我们可以把图像看做这个高维度空间中的一个点(即每张图像是3072维空间中的一个点)。整个数据集就是一个点的集合,每个点都带有1个分类标签。

既然定义每个分类类别的分值是权重和图像的矩阵乘,那么每个分类类别的分数就是这个空间中的一个线性函数的函数值。我们没办法可视化3072维空间中的线性函数,但假设把这些维度挤压到二维,那么就可以看看这些分类器在做什么了:

这里写图片描述
图像空间的示意图。其中每个图像是一个点,有3个分类器。以红色的汽车分类器为例,红线表示空间中汽车分类分数为0的点的集合,红色的箭头表示分值上升的方向。所有红线右边的点的分数值均为正,且线性升高。红线左边的点分值为负,且线性降低。

2.标准信号 自定义槽函数

connect(&b2,SIGNAL(pressed()),this,SLOT(changeText()));

平方折叶损失(hinge loss)

2.2 正则化(Regularization)

存在问题:假设有一个数据集和一个权重集W能够正确地分类每个数据(即所有的边界都满足,对于所有的i都有L_i=0)。问题在于这个W并不唯一:可能有很多相似的

正则化惩罚(regularization penalty)

上面的表达式中,将W中所有元素平方后求和。

所以一个完整的损失函数由两个部分组成:数据损失(data loss),即所有样例的的平均损失L_i,以及正则化损失(regularization loss)。

N是训练集的数据量,λ是权重。

3.自定义信号 自定义槽

connect(&w1,SIGNAL(subsignal1()),this,SLOT(ToDealSub1()));

4.信号的重载

//Qt4信号连接//Qt4槽函数必须有slots关键字来修饰//SIGNAL(里面的东西书写错误,可以编译通过,但是运行的过程中会出现警告)connect(&w2,SIGNAL(subsignal2()),this,SLOT(ToDealSub2())); connect(&w2,SIGNAL(subsignal2(int,QString)),this,SLOT(ToDealSub2M(int,QString)));

Softmax分类器使用交叉熵损失(cross-entropy loss)

softmax函数

softmax函数:
这里写图片描述

和SVM 分类器一样,整个数据集的损失值是数据集中所有样本数据的损失Li的均值与正则化损失R(W)之和。

举例如下:

这里写图片描述

这里写图片描述

这里写图片描述

0 0
原创粉丝点击