手把手教你K最近邻分类器分类CIFAR-10

KNN算法全称为k-Nearest Neighbor Classifier,即k最近邻分类器。它可以看作是Nearest Neighbor Classifier最近邻分类器的加强版,无论是最近邻分类器还是k最近邻分类器,其原理都比较简单,其算法在CIFAR-10图像分类的效果上其正确率远低于人类识别图像的正确率(约94%),但也略高于随即猜测的10%的正确率(CIFAR-10有10个分类,随机猜测...
摘要由CSDN通过智能技术生成

KNN算法全称为k-Nearest Neighbor Classifier,即k最近邻分类器。它可以看作是Nearest Neighbor Classifier最近邻分类器的加强版,无论是最近邻分类器还是k最近邻分类器,其原理都比较简单,其算法在CIFAR-10图像分类的效果上其正确率远低于人类识别图像的正确率(约94%),但也略高于随即猜测的10%的正确率(CIFAR-10有10个分类,随机猜测的正确率为10%)。

基于最近邻分类器的CIFAR-10的图像分类

CIFAR-10可视化 可参考:https://blog.csdn.net/qq_36552550/article/details/105835108

1.最近邻分类器原理

前面的CIFAR可视化将200副图像保存在了10个文件夹当中,观察ship文件夹中的前两幅图片“8.jpg”以及“62.jpg”,如图1所示。直观上来看,天空和大海都是蓝色的,船则是白色的,位于图像正中间;照此推理,相似的类别的图像,比如船,图像大致是类似的。

图5-3-1 ship文件夹中前两幅图像对比

那么,要判断test_batch中的某一幅图像属于哪一个类别,可以将该图像和data_batch1至data_batch5的图像依次比对,找出最相似的一副图像,这样就认为该图像和最相似图像属于一个类别。

具体实现上,将test_batch中的图像的每一个像素的RGB数值依次减去data_batch1至data_batch5的图像的每一个像素的RGB数值,将相减的数求绝对值,然后将所有的绝对值相加,得出和值,依照这个和值的大小来判断两幅图像的相似度;两幅图像相似程度越高,这个和值应该越低。以此,可以推断test_batch中图像属于哪一个类别。

该过程可以视作求取两向量L1距离的过程。因为每幅图像在CIFAR-10中以行向量进行保存,则可认为两幅图像为两个向量I1、I2,求两向量的L1距离即可得出结果:

(L1距离为求差值的绝对值,而L2距离则是求平方和的开平方;这里使用L1距离的好处就是计算量更小)

 Numpy的广播机制、sum()函数以及argmin()函数

test_batch文件同样是一行代表一副图片,然后将该行依次减去data_batch_1至5的每一行,如果将data_batch_1至5的图像数据全部拼接在一起,相当于是一个1*3072的数组减去一个50000*3072的数组的每一行。这里面就涉及两个编程实现的问题——1.data_batch_1至5的数据拼接;2.一个1*3072的数组减去一个50000*3072的数组的每一行的实现。

首先,看一下数据拼接的问题。将data_batch_1至5文件中字典dictionary类型里面的图像数据和标签读出,读出后为列表list类型,进行计算的时候需要提前将list类型转换成Numpy的array类型,并且维度也要符合50000*3072需要。

接下来看一个简单的程序例子,如程序1所示。

程序1 数据拼接示例

import numpy as np

x = []
a = [[1,2],[3,4]]
b = [[5,6],[7,8]]
print(a)
print(b)
x.append(a)
print(x)
x.append(b)
print(x)

xb = np.array(x)
print(xb)
print(xb.shape)

xa = np.concatenate(x)
print(xa)
print(xa.shape)

首先看第2行至第11行,通过append()函数,列表x依次将列表a和列表b放入自己的列表中;如图2所示。

  • 9
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2023-pytorch是一个开源深度学习库,它在计算机视觉领域有广泛的应用。本文将手把手你如何使用CSDN来学习和获取有关2023-pytorch分类的相关资料和程。 首先,在你的浏览器中打开CSDN的官方网站,网址为www.csdn.net。在主页上,你可以看到各种热门的技术文章、博客和论坛。在搜索框中输入"2023-pytorch分类",然后点击搜索按钮。CSDN将会为你展示与该关键词相关的所有内容。 接下来,你可以通过筛选工具来找到特定类型的文章或程。例如,你可以选择只查看博客、文章或程。你还可以选择按照发布时间或热度排序来获取最新或最受欢迎的内容。 当你找到一篇感兴趣的程时,点击进入阅读。通常,程会提供详细的步骤和示例代码,帮助你了解如何使用2023-pytorch进行分类任务。你可以按照程中的指示一步一步地操作,并理解每个步骤的原理和作用。 除了阅读程外,CSDN还提供了一个活跃的技术问答社区。你可以在这里向其他用户提问、讨论问题,或分享你的学习体验和心得。社区中的任何人都可以回答你的问题,所以不要犹豫,积极参与其中。 此外,CSDN还为用户提供了博客功能,你可以创建自己的博客来记录学习过程和分享实践经验。通过写博客,你还可以得到其他人的反馈和建议,不断提升自己的技术水平。 总结起来,要使用CSDN学习和获取有关2023-pytorch分类的相关资料和程,你可以通过搜索功能找到相关内容,阅读程并按照指导一步一步地进行实践,参与技术问答社区以及利用博客功能分享你的学习心得和经验。通过这些途径,你将能够快速掌握2023-pytorch分类的基本原理和应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值