第一节课大部分都是废话。第二节课的前面也都是废话。

First classifier: Nearest Neighbor Classifier

在一定时间,我记住了输入的所有的图片。在再次输入一个图片之后,我和之前的图片进行比较,然后输出分类。

近邻分类器用50000张32*32 10labels的训练集来训练。我们定义距离为曼哈顿距离d1(I1,I2)=sigma(abs(I1-I2)),我们相互之间算出每个像素的差值,然后加起来就是距离。

然后我们得到距离最小的一个图片,然后看这图片的label是什么。

tip1:这个傻逼算法会随着训练集合增加,速度变得很慢。。

tip2:这个傻逼算法在训练的时候,我们不计算,只会在最后测试的时候才计算。


加速方法:加速近邻距离的计算,加速匹配。

改变方法:我们亦可以使用不同的距离计算方法,比如欧氏距离。


升级版:KNN,我们找k个最近的list,然后让里面的实例进行vote,票数最多的就是这个分类。k越大分界线越平滑。k的选择是一个超参数。

tip1:假设训练集就是测试集,那么nn的准确率就是100%(因为总能找到自己)

tip2:假设是knn,acc就不一定是100%

tip3:我们怎么去设置超参数?这是一个独立问题,我们不知道,你只能不断的去尝试这个超参数的取值(这不是等于没说吗。。。


拟合程度的选择会影响你的泛化能力,你可以使用k-fold来提高你的泛化能力。cross-validation也可以

实际生活中,没人使用这个傻逼算法,因为这个傻逼算法很慢。如果如果图片稍微变了一下(比如往左边平移,比如亮度不一样),距离就会差很多,但实际上这个图片只是小小的改变了一下,knn就会很难识别。(实际上我觉得这应该是你选择的距离计算方法不对)

Linear Classification

神经网络现在非常屌,哪儿都有神经网络。neural networks practitioner,我们就像搭积木一样搭建神经网络。

考虑32323的一个数据集,一个图一共3072个数,我们想知道这个图属于哪一类。

f(x,W)来表示,x是image,W是parameters。输入图片,输出分类。

最简单的线性分类器\(fx,W,b) = Wx+b\),W是10*3072的矩阵,x是3072*1的矩阵,b是10*1的bias。我们通过不断的调整W和b来到最佳的结果。

tips1:线性分类器做了什么?W就像一个模版匹配,它实际上是用一些分数的加权和,与自己想要的颜色匹配。我们可以把图片想成高伟空间的点,然后线性分类器就是每一条线,描绘这个取样空间中负点指向正点方向的梯度。沿着这条直线,你会得到0分,如果在正方向,距离越远分数越高。

tip2:什么东西线性分类系很难去分类?你的图片如果在3072高维空间是一个圆,那么一条直线很难去很好的分割(自行脑补画面)。灰度图片很难用线性分类器去做,因为特征不够。

定义损失函数,能够quantifying what it means to have a good W.

1. cs231n k近邻和线性分类器 Image Classification的更多相关文章

  1. 最近邻分类器,K近邻分类器,线性分类器

    转自:https://blog.csdn.net/oldmao_2001/article/details/90665515 最近邻分类器: 通俗来讲,计算测试样本与所有样本的距离,将测试样本归为距离最 ...

  2. cs231n笔记:线性分类器

    cs231n线性分类器学习笔记,非完全翻译,根据自己的学习情况总结出的内容: 线性分类 本节介绍线性分类器,该方法可以自然延伸到神经网络和卷积神经网络中,这类方法主要有两部分组成,一个是评分函数(sc ...

  3. cs231n笔记 (一) 线性分类器

    Liner classifier 线性分类器用作图像分类主要有两部分组成:一个是假设函数, 它是原始图像数据到类别的映射.另一个是损失函数,该方法可转化为一个最优化问题,在最优化过程中,将通过更新假设 ...

  4. 【Python 代码】CS231n中Softmax线性分类器、非线性分类器对比举例(含python绘图显示结果)

    1 #CS231n中线性.非线性分类器举例(Softmax) #注意其中反向传播的计算 # -*- coding: utf-8 -*- import numpy as np import matplo ...

  5. 机器学习 —— 基础整理(三)生成式模型的非参数方法: Parzen窗估计、k近邻估计;k近邻分类器

    本文简述了以下内容: (一)生成式模型的非参数方法 (二)Parzen窗估计 (三)k近邻估计 (四)k近邻分类器(k-nearest neighbor,kNN) (一)非参数方法(Non-param ...

  6. chapter02 K近邻分类器对Iris数据进行分类预测

    寻找与待分类的样本在特征空间中距离最近的K个已知样本作为参考,来帮助进行分类决策. 与其他模型最大的不同在于:该模型没有参数训练过程.无参模型,高计算复杂度和内存消耗. #coding=utf8 # ...

  7. 机器学习之路: python k近邻分类器 KNeighborsClassifier 鸢尾花分类预测

    使用python语言 学习k近邻分类器的api 欢迎来到我的git查看源代码: https://github.com/linyi0604/MachineLearning from sklearn.da ...

  8. cs231n线性分类器作业 svm代码 softmax

    CS231n之线性分类器 斯坦福CS231n项目实战(二):线性支持向量机SVM CS231n 2016 通关 第三章-SVM与Softmax cs231n:assignment1——Q3: Impl ...

  9. [基础]斯坦福cs231n课程视频笔记(一) 图片分类之使用线性分类器

    线性分类器的基本模型: f = Wx Loss Function and Optimization 1. LossFunction 衡量在当前的模型(参数矩阵W)的效果好坏 Multiclass SV ...

随机推荐

  1. bzoj 4621: Tc605 动态规划

    题解: 一道比较简单的题目 想着想着就把题目记错了..想成了可以把某段区间覆盖为其中一个数 其实是比较简单的 每个点的贡献一定是一个区间(就跟zjoi2018那题一样) 然后问题就变成了给你n个区间让 ...

  2. mysql 5.6.25编译安装详细步骤

    简略步骤: mysql5.6.25编译安装步骤: 下载mysql准备用户和组yum安装依赖解压mysqlcmake编译mysqlmake && make install ----时间约 ...

  3. 安全测试robots

    http://stock.pingan.com/robots.txt

  4. python manage.py runserver指定端口和ip

    python manage.py runserver 0.0.0.0:8000 在本地运行程序,python manager.py runserver打开http://127.0.0.1:5000端口 ...

  5. 复制数组之System.arraycopy()的使用

    System.arraycopy(src, srcPos, dest, destPos, length); [参数说明](注:arraycopy是一个古老的方法,从jdk1.0就有了,而当时命名并不规 ...

  6. 【转】Java开发必须要知道的知识体系

    Java Java是一门超高人气编程语言,拥有跨平台.面向对象.泛型编程等特性.在TIOBE编程语言排行榜中,连续夺得第一宝座,而且国内各大知名互联网公司,后端开发首选语言:非Java莫属.今天只是梳 ...

  7. 安卓开发中SpannableString之富文本显示效果

    SpannableString其实和String一样,都是一种字符串类型,SpannableString可以直接作为TextView的显示文本,不同的是SpannableString可以通过使用其方法 ...

  8. 使用zabbix监控oracle表空间

    0.概述 zabbix是一款极其强大的开源监控工具,下面我分享下zabbix如何监控表空间,跟着这个思路,监控其他项都是类似操作. 前提条件是你已经有了zabbix server和zabbix age ...

  9. python简单名片管理系统

  10. PAT (Advanced Level) Practise 1003 解题报告

    GitHub markdownPDF 问题描述 解题思路 代码 提交记录 问题描述 Emergency (25) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 16000 B 判题 ...