cs231n lecture2 image classification
2024-10-06 18:00:01
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距离较小,可以发现一些背景相似的图片距离较小,相对于主体,背景对类别的影响更大。
最新文章
- css3clock.js - 一个用CSS3与纯js实现的简单时钟
- 西门子成立next47部门,斥资十亿欧元投资VR/AR等初创公司
- iOS开发时,在Xcode中添加多个Targets进行版本控制
- 利用javascript、php和ajax实现计算器
- [android界面]android中src和background区别——前景与背景
- MySQL的基本函数
- OAF_EO系列2 - Validation数据校验验证机制(概念)
- codeforces 430A Points and Segments (easy)(理解能力有待提高……)
- animate平滑回到顶部
- 【转】Django Middleware
- ORACLE数据库学习之SQL性能优化详解
- Python_将指定文件夹中的文件压缩至已有压缩包
- 一种非常巧妙的读取串口数据的方法--C#
- 导出pip安装的所有放入一个文件中,并把通过这个安装所有的包
- 使用google earth engine根据NDWI(归一化水指数)提取水体信息
- 基于MMSE的预测
- 【洛谷P1330】封锁阳光大学
- angularjs动态添加节点时,绑定到$scope中
- 微信小程序 功能函数 支付接口
- 5V and 3V Level Translators