zoukankan      html  css  js  c++  java
  • 1. cs231n k近邻和线性分类器 Image Classification

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

    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.

  • 相关阅读:
    PHP图像操作:3D图、缩放、旋转、裁剪、添加水印(三)
    PHP图像操作:3D图、缩放、旋转、裁剪、添加水印(二)
    PHP图像操作:3D图、缩放、旋转、裁剪、添加水印(一)
    问题:关于贴友分类菜单的实现
    jq实现图片轮播:圆形焦点+左右控制+自动轮播
    CSS快速制作图片轮播的焦点
    常用的正则表达式归纳—JavaScript正则表达式
    JQuery插件之图片轮播插件–slideBox
    Javascript时间操作小结
    python第八天)——购物车作业优化完成
  • 原文地址:https://www.cnblogs.com/qscqesze/p/7875962.html
Copyright © 2011-2022 走看看