CS231_深度之眼打卡_2

根据课程内容及网上相关内容记录笔记,仅学习使用

第4节、数据驱动方法

在这里插入图片描述

第5节、KNN算法

在这里插入图片描述

作业

1. 图像分类数据和label分别是什么 图像分类存在的问题与挑战

图像分类,核心是从给定的分类集合中给图像分配一个标签的任务。实际上,这意味着我们的任务是分析一个输入图像并返回一个将图像分类的标签。标签总是来自预定义的可能类别集。
在这里插入图片描述
视点变化(viewpoint variation),即物体对应于是如何被拍照或获取的造成是原始还是多维度旋转的图像,但不管怎么视点变化,东西不变。
缩放变化(scale variation),无论如何缩放除了大小size不同,它们是同样的东西。图像分类方法必须适应这种变化。
变形(deformation),所有这些图像都包含了图像的特性,但是它们之间都是弹性、扭曲、动态变化的。
闭合变化(occlusions variation),两幅图中都是狗,但是右图被隐藏在其它图像之下,图像分类应当能够处理这种情况。
光照变化(illumination variation),我们应当能够分类出同样得到咖啡杯,但是由于光照使得他们看起来很不同。
背景杂乱(background clutter),当我们需要在杂乱背景下要分类出图像的特定物体时,对于我们都是困难的,何况是电脑了。
类内变化(intra-class variation),同样的椅子确有不同的种类,而我们的图像分类算法必须能够识别出所有正确的种类。

2. 使用python加载一张彩色图片,观察像素值

import skimage.io as io
import matplotlib.pyplot as plt
from PIL import Image
import numpy as np
import os
image='10.jpg'
img=Image.open(np.str(image))
img=np.array(img)
print(img)
plt.figure("black-white")
plt.imshow(img)
plt.show()

在这里插入图片描述

3. L1范数,L2范数数学表达式 这两种度量分别适用于什么情况

在这里插入图片描述
L1 范数是沿着坐标轴的,所以当特征是具有某些实际含义的时候可能会有效些,但L2范数更为常用,在实际使用中应该都试验以下。

4. 描述近邻算法KNN NN算法复的杂度 为什么很少使用在图像中以及它存在的问题

训练复杂度:O(1) 只需要存储训练数据
测试复杂度:O(N)需要与每个样本对比
原因有两个:
1.很差的测试效率;
2.整个图像水平的距离度量可能非常不直观。
如说第二个原因可以靠着一些特征描述子来解决的话,那么第一个问题就是KNN算法的硬伤,在机器学习中其实我们对测试阶段的时间容忍要远远高于训练阶段,因为最终使用模型解决问题时足够快就可以了,CNN普遍是这样。但是这个问题在KNN中就会无限的暴露出来,“在线”学习的方式决定了样本量越大,分类过程就会越慢。

5. 了解cifar-10数据集

CIFAR-10是由欣顿的学生Alex Krizhevsky和Ilya Shtskever整理的一个用于识别普适物体的小型数据集。它一共包含10各类别的RGB彩色图像:飞机(airplane)、汽车(automobile)、鸟类(bird)、猫(cat)、鹿(deer)、狗(dog)、青蛙(frog)、马(horse)、船(ship)以及卡车(truck)。图片的尺寸为32*32,数据集中一共有50000张用于训练的图片和10000张用于测试的图片。
在这里插入图片描述

6. 超参数怎么选择合适(即数据集如何划分)

在机器学习里面可能会有很多这种参数,他们不是通过重复的动作被“训练”出来的,而是根据设计者(我们人)的经验总结出来的一个可能会让整个效果更好的参数。因此我们一般设定他们之前会问自己两个问题:

什么样的 k 值能够被最好的使用得出最棒的结果(k 值指的是不同属性数据间最近的 k 个点的距离)

什么样的“步距”是最恰当的距离

以下几种方式可以设定 Hyperparameter(简称 HP)

找出一个 HP 是最为拟合已经有的数据的,有极高的准确率与重合性。但是结果显示,通常这样的结果都是过拟合的结果,在新来的数据面前,很难继续有好的拟合效果。e.g. 一个人被认定为有眼睛鼻子嘴巴的特征,过拟合白话地说就是机器“太较真”了,只认定展示给他看有眼睛鼻子嘴巴的那才是个人,今天来了个眼睛被头发遮住的人,于是机器就说这不是人,显然他过拟合了

把一大块数据分成训练用的和测试用的两部分,找出在训练中表现最好的 HP ,然后把这个结果套到测试集里面。但是一般而言这个结果也不怎么好,因为训练出来的 model 我们最主要关心的是它面向新的 data 时的表现,现有的只是一个我们用来预测的依据与手段

把一大块数据分成三份:训练,验证,测试。在训练集中找出最恰当的 HP,然后放到验证集做进一步确认与修改,最后得出的结果放到测试集去跑分看成绩。现实上这是一个比较好的解决方案

交叉验证法(也是最有公信力,准确性的一种方法),但是不适用于深度学习框架,因为数据量太大了。把整块数据分成若干份留一块给测试集,然后随机取一块作为验证集,剩下的 n-2 块全部作为训练集找最好的 HP,找到后放到验证集去,剩下的步骤如第三种方法,最后等所有的块都当过验证集后,把所有结果取平均得到最后的结果。虽然这个结果准确,但是耗费太大的计算资源,是个只有理论上可行的方法

K-Nearest Neighbors 方法总结

图像分类器的建立过程中,我们从图片训练集与标签开始,预测测试集的图像该是什么样子

他预测的方法是根据邻近的训练样本

标尺的距离与 k 值都是一种 Hyperparameters

从验证集中被测试好的 HP只在最后放到测试集测试一次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值