cv学习总结(SVM,softmax)10.24-10.30
本周完成了SVM课程笔记的阅读,包括SVM的基本原理以及SVM的优化过程,以及实现了SVM的两种损失函数(svm以及softmax)的线性分类器,以及学习了反向传播以及神经网络的初步。其中:svm在测试集上的准确率为37.4%,softmax损失函数在测试集上的准确率为35.6%,相较于KNN的27.4%提升约为36.5%及29.9%,提升幅度相对较大,此外SVM相较于KNN来说,时间性能更佳;之前学习的KNN算法属于直接将所有的训练图片数据化,根据图片的像素值进行判断,最简单的NN算法是用与待判断图片的差距最小(距离最近)的那张图片的类别当做此图片的类别,我们不难看到,1NN算法的正确性很差,相较于完全随机的10%的正确率,其正确率也不过只有20%左右,正确率低。我们用KNN算法则是用与其临近的K张图图片进行“投票”,得票最多的类别即为此图片的类别,可以看到,KNN算法有效的排除了某些噪声的干扰,但是主体的思路仍然是直接进行比较,此算法的缺点在于时间复杂度高,即每次判断一张新图片时,我们都需要遍历所有的训练数据,将训练数据的值与待判断题图片的像素值进行比较,而且十分不精确。
SVM算法的特点是需要模型需要经过长时间的训练(例如在本次实践中,训练模型就花了2.5分钟,这还仅仅是在数据规模不是很大的情况下),而之前的KNN不需要任何的训练和迭代过程,所谓的训练,仅仅是将所有的像素值都存在了一个矩阵中进行比较而已。但是SVM的判断过程极其迅速,只需要做一个矩阵乘法,然后找到其中分数最高的类就可以实现,不需要遍历整个训练集,能够更为方便的判断数据,这是SVM相较于KNN在时间性能上比较优秀的地方,此外,在算法的正确性方面,SVM跟KNN比较也有了长足的进步。
此外,针对SVM整体的实现思路以及更多的细节,我写了一篇博客https://www.cnblogs.com/Lbmttw/p/16830180.html
本周学习遇到的困难是在神经网络的部分的反向传播,当f=wx+b中的wx都是矩阵时,其梯度的计算让我下午的时候推导了好久,怎么想都觉得应该是一个的三维矩阵才能描述,后来忽然想到这个三维矩阵中大部分元素都是0,并且根据矩乘法的性质只有输出的fij和xij中的i相等时,梯度才不为0,根据这个性质,可以将三维矩阵压缩为一个二维的n*m的矩阵。数学在反向传播中还是比较重要的。最大的收获是初步确定了当前阶段的学习方法:先看完cs231n的视频讲解部分,然后看英文的笔记,针对笔记中不懂的地方去拓展学习,学习完毕后将代码复现出来。写完代码过后,将整个算法的具体思路复现出来,以此为一个循环。
cv学习总结(SVM,softmax)10.24-10.30的更多相关文章
- Cheatsheet: 2013 10.24 ~ 10.31
Web Performance Comparison Between Node.js and Java EE Other Hidden Productivity Secrets With Alfred ...
- 【records】10.24..10.30
做的题越来越少了; 我是不是该学下网络流.
- python中使用Opencv进行车牌号检测——2018.10.24
初学Python.Opencv,想用它做个实例解决车牌号检测. 车牌号检测需要分为四个部分:1.车辆图像获取.2.车牌定位.3.车牌字符分割和4.车牌字符识别 在百度查到了车牌识别部分车牌定位和车牌字 ...
- 背水一战 Windows 10 (24) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过非 ButtonBase 触发命令
[源码下载] 背水一战 Windows 10 (24) - MVVM: 通过 Binding 或 x:Bind 结合 Command 实现,通过非 ButtonBase 触发命令 作者:webabcd ...
- 深度学习框架-caffe安装-Mac OSX 10.12
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px ".PingFang SC"; color: #454545 } p.p2 ...
- 10.24 正睿停课训练 Day8 AM
目录 2018.10.24 正睿停课训练 Day8 AM A 棒棒糖(组合) B 彩虹糖(思路 博弈) C 泡泡糖(DP) 考试代码 A B C 2018.10.24 正睿停课训练 Day8 AM 期 ...
- table-cell http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html
http://www.cnblogs.com/StormSpirit/archive/2012/10/24/2736453.html
- 使用mybatis提供的各种标签方法实现动态拼接Sql。使用foreach标签实现遍历查询。比如实现select * from user where id in(1,10,24)这条sql查询语句。
向sql传递数组或List,mybatis使用foreach解析,如下: 需求: 传入多个id查询用户信息,用下边的sql实现: select * from user where id in(1,10 ...
- amazeui学习笔记--css(常用组件10)--导航条Topbar
amazeui学习笔记--css(常用组件10)--导航条Topbar 一.总结 1. 导航条:就是页面最顶端的导航条:在容器上添加 .am-topbar class,然后按照示例组织所需内容.< ...
- Java习题10.24
Java习题10.24 1. 1,3.connect()与accept():这两个系统调用用于完成一个完整相关的建立,其中connect()用于建立连接.accept()用于使服务器等待来自某客户进程 ...
随机推荐
- 记录一次重置数据库root用户的过程
服务器的mysql突然连接不上去了,密码也忘记了.只能重新设置密码了 1.使用如下指令打开mysql数据库配置文件(具体的文件路径以实际情况为准) vim /etc/my.cnf在虚拟机中直接输入即可 ...
- 这样封装echarts简单好用
为什么要去封装echarts? 在我们的项目中,有很多的地方都使用了echarts图表展示数据. 在有些场景,一个页面有十多个的echarts图. 这些echarts只是展示的指标不一样. 如果我们每 ...
- LockSupport 详解
更多内容,前往IT-BLOG LockSupport 用来创建锁和其他同步类的基本线程阻塞原语.简而言之,当调用 LockSupport.park时,表示当前线程将会等待,直至获得许可,当调用 Loc ...
- WordPress回复/评论本文可见
给WordPress添加一个实用的小功能,那就是回复可见,评论文章才能见到隐藏内容. 在主题目录下找到functions.php文件,在合适位置添加下方的代码: // 回复可见 function re ...
- Vue2数据驱动渲染(render、update)
上一篇文章我们介绍了 Vue2模版编译原理,这一章我们的目标是弄清楚模版 template和响应式数据是如何渲染成最终的DOM.数据更新驱动视图变化这部分后期会单独讲解 我们先看一下模版和响应式数据是 ...
- 拒绝“爆雷”!GaussDB(for MySQL)新上线了这个功能
摘要:智能把控大数据量查询,防患系统奔溃于未然. 本文分享自华为云社区<拒绝"爆雷"!GaussDB(for MySQL)新上线了这个功能>,作者:GaussDB 数据 ...
- 在Mac搭建一个便捷的Markdown创作环境
前言 使用 Typora + PicGo + Gitee + Snipaste 在 Mac 搭建一个 Markdown 编辑环境. Typora 是一款简洁的 Markdown 编辑器: PicGo ...
- IO流中「线程」模型总结
目录 一.基础简介 二.同步阻塞 1.模型图解 2.参考案例 三.同步非阻塞 1.模型图解 2.参考案例 四.异步非阻塞 1.模型图解 2.参考案例 五.Reactor模型 1.模型图解 1.1 Re ...
- python内在模块之winreg --- Windows 注册表访问
winreg --- Windows 注册表访问¶ 这些函数将 Windows 注册表 API 暴露给 Python.为了确保即便程序员忽略了显式关闭句柄,该句柄依然能够正确关闭,它使用了一个 han ...
- telnet命令安装
1.[root@pld3bomdb01 ~]# yum install telnet-server 2.[root@pld3bomdb01 ~]# rpm -qa telnet* telnet-ser ...