1、图片分类若采用最近邻法

 import numpy as np

 class NearestNeighbor:
def _init_(self):
pass def train(self, X, y):
self.Xtr = X
self.ytr = y def predict(self, X):
num_test = X.shape[0]
Y_pred = np.zeros(num_test, dtype = self.ytr.dtype) for i in range(num_test):
distances = np.sum(np.abs(self.Xtr - X[i, :]), axis = 1)
min_index = np.argmin(distances)
Y_pred[i] = self.ytr[min_index] return Y_pred

train函数时间复杂度为O(1),test函数时间复杂度为O(n),n为训练集大小。

训练时间短,但测试时间过长。

一般最好是训练时间较长,测试时间短,如CNN。

2、超参数:不是学习到的参数而是自己人工设置的参数。

如K近邻算法中的K值和距离度量算法的选择。

3、数据集划分:

划分为训练集、验证集、测试集。验证集用来选择超参数,只在测试集上测试一次。

当数据集比较小时,可采用k折交叉验证的方法,即将数据集划分为k份,其中k - 1份作为训练集,剩下的1份作为验证集,取k份数据集分别作为验证集的结果的平均值作为最终结果。

然而由于交叉验证计算代价高,在实践中使用较少。

4、KNN(K最近邻)优缺点:

当特征个数较少时适合用。另外可通过kd树、k均值等方法减少时间复杂度。

另外通过L2距离来比较图片是和人类直觉不同的,如上图中,原始图片分别经过平移、遮挡、变色,但得到的图片和原始图片的L2距离相同,

这和人类直觉显然不符。

在上面的图片中,相邻的图片L2距离较小,可以发现一些背景相似的图片距离较小,相对于主体,背景对类别的影响更大。

cs231n lecture2 image classification的更多相关文章

  1. cs231n spring 2017 lecture2 Image Classification 听课笔记

    1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...

  2. cs231n spring 2017 lecture2 Image Classification

    1. 相比于传统的人工提取特征(边.角等),深度学习是一种Data-Driven Approach.深度学习有统一的框架,喂不同的数据集,可以训练识别不同的物体.而人工提取特征的方式很脆弱,换一个物体 ...

  3. CNN for Visual Recognition (02)

    图像分类 参考:http://cs231n.github.io/classification/ 图像分类(Image Classification),是给输入图像赋予一个已知类别标签.图像分类是计算机 ...

  4. CNN(卷积神经网络)、RNN(循环神经网络)、DNN,LSTM

    http://cs231n.github.io/neural-networks-1 https://arxiv.org/pdf/1603.07285.pdf https://adeshpande3.g ...

  5. L2 范数 L1 范数 出租车范数

    https://en.wikipedia.org/wiki/Norm_(mathematics) http://cs231n.github.io/classification/

  6. AI入门丨开源学习资源推荐

    现在AI大热,网上的资源也非常多,让人眼花缭乱.非科班的我,经过半年的摸索,也算马马虎虎入了坑.下面整理了我认为不错的学习资源,大部分我都看过,以分享给更多的人.我会不断保持更新,也欢迎大家补充. P ...

  7. (Review cs231n) Spatial Localization and Detection(classification and localization)

     重在图像的定位和检测的内容. 一张图片中只有一种给定类别标签的对象,定位则是图像中有对象框:再这些类中,每一个训练目标都有一个类和许多的图像内部对应类的位置选框. 猜想的仅是类标签,不如说它们是位置 ...

  8. 1. cs231n k近邻和线性分类器 Image Classification

    第一节课大部分都是废话.第二节课的前面也都是废话. First classifier: Nearest Neighbor Classifier 在一定时间,我记住了输入的所有的图片.在再次输入一个图片 ...

  9. 【cs231n】图像分类-Linear Classification线性分类

    [学习自CS231n课程] 转载请注明出处:http://www.cnblogs.com/GraceSkyer/p/8824876.html 之前介绍了图像分类问题.图像分类的任务,就是从已有的固定分 ...

随机推荐

  1. gogs 搭建

    sudo apt-get install nginx sudo apt-get install git sudo apt-get install mysql-server mysql -u root ...

  2. Node.js学习(1)-加载模块require('fs/http/.b/art-template')

    node.js既不是语言,也不是框架,它是一个平台 加载模块: 核心模块(require('fs/http')), 自定义模块(var bExport=require('./b'),exports.f ...

  3. CSS用户界面样式之cursor/outline/resize

    1. 鼠标样式cursor 检测鼠标指针在对象上移动的鼠标指针采用何种系统预定于的光标形状 常用属性: default 小白 hands小手 /pointer move移动 text文本 2. 轮廓 ...

  4. redis __详解 (转载自作者:孤独烟 出处: http://rjzheng.cnblogs.com/)

    https://www.cnblogs.com/rjzheng/p/9096228.html [原创]分布式之redis复习精讲 引言 为什么写这篇文章? 博主的<分布式之消息队列复习精讲> ...

  5. BootStrap【二、样式】

    H5文档类型 由于使用了H5和CSS熟悉,需要在文件头引入 移动设备优先 为了对移动设备友好,需要使用标签viewport width=device-width 宽度为设备宽度 height 高度 i ...

  6. Error:Execution failed for task ':app:compileDebugJavaWithJavac'

    百度一下呗 查找了各种解决方案,都不对症. 最后发现,造成这种异常的原因有很多.具体的还是要去终端编译,查看到底是什么地方出错了,然后具体问题具体分析. 终端进入项目的根目录,然后输入命令 ./gra ...

  7. php的三个常用判断函数

    <?phperror_reporting(E_ERROR);$a;$b = false;$c = '';$d = 0;$e = null;$f = array(); echo 'empty', ...

  8. elasticsearch联想加搜索实例

    //搜索框具体的ajax如下: <form class="form-wrapper cf"> <img src="__PUBLIC__/Home/img ...

  9. Linux之ln文件创建链接

    ln命令用来为文件创建链接,链接类型分为硬链接和软链接(符号链接)两种 1)软连接和Windows系统中的快捷方式有点类似 2)硬链接,相当于多了一个文件名指向同一块内存空间,目录无法创建硬链接,不可 ...

  10. 数据库 Redis:Windows环境安装

    1. 下载 Redis (1)前往 GitHub 下载:https://github.com/microsoftarchive/redis (2)点击 release : (3)选择好版本号后,下载文 ...