zoukankan      html  css  js  c++  java
  • cs231n lecture2 image classification

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

     1 import numpy as np
     2 
     3 class NearestNeighbor:
     4     def _init_(self):
     5         pass
     6   
     7     def train(self, X, y):
     8         self.Xtr = X
     9         self.ytr = y
    10   
    11     def predict(self, X):
    12         num_test = X.shape[0]
    13         Y_pred = np.zeros(num_test, dtype = self.ytr.dtype)
    14     
    15         for i in range(num_test):
    16             distances = np.sum(np.abs(self.Xtr - X[i, :]), axis = 1)
    17             min_index = np.argmin(distances)
    18             Y_pred[i] = self.ytr[min_index]
    19     
    20     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距离较小,可以发现一些背景相似的图片距离较小,相对于主体,背景对类别的影响更大。

  • 相关阅读:
    绪论-1.1.2机器学习
    Django从 URL获取参数的几种方式
    conda创建虚拟换件安装包时报错“无法定位程序输入点OPENSSL_sk_new_reserve于动态链接库C:Users...libssl-1_1-x64.dll”
    执行python manage.py makemigrations出错
    Linux下conda虚拟环境
    云服务器安装mysql
    2020牛客暑期多校训练营(第五场)
    2020牛客暑期多校训练营(第四场)
    2020牛客暑期多校训练营(第三场)
    All with Pairs
  • 原文地址:https://www.cnblogs.com/lxc1910/p/11300218.html
Copyright © 2011-2022 走看看