KNN

assignment1 KNN讲解参见:

https://blog.csdn.net/u014485485/article/details/79433514?utm_source=blogxgwz5

np. flatnonzero(a) 返回a的展平版本中非零的索引。

a1 = np.random.choice(a=5, size=3, replace=False, p=None)  参数分别从a 中以概率p,随机选择3个, p没有指定的时候相当于是一致的分布。replacement的意思是抽样之后还放不放回去,如果是False的话,那么出来的三个数都不一样,如果是True的话, 有可能会出现重复的,因为前面抽的放回去了。

subplot(nrows, ncols, plot_number) 作用是把一个绘图区域(可以理解成画布)分成多个小区域,用来绘制多个子图。nrows和ncols表示将画布分成(nrows*ncols)个小区域,每个小区域可以单独绘制图形;plot_number表示将图绘制在第plot_number个子区域。举例: createPlot = subplot(222),表示画布分成(2*2=4)个小区域,并将图createPlot绘制在画布中的第二个子区域,也就是右上角位置。

imshow():https://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.imshow

astype('uint8'): 把图像数据类型转换为无符号八位整型,范围是0-255。如果输入图像是无符号八位整型的,返回的图像和源图像相同。

plt.axis('off')     不显示坐标尺寸,区别见下图:

numpy.reshape(a, newshape, order='C')

a:array_like。要重新形成的数组。

newshape:int或tuple的整数。新的形状应该与原始形状兼容。如果是整数,则结果将是该长度的1-D数组。一个形状维度可以是-1。在这种情况下,从数组的长度和其余维度推断该值。

order:{'C','F','A'}可选。使用此索引顺序读取a的元素,并使用此索引顺序将元素放置到重新形成的数组中。'C'意味着使用C样索引顺序读取/写入元素,最后一个轴索引变化最快,回到第一个轴索引变化最慢。'F'意味着使用Fortran样索引顺序读取/写入元素,第一个索引变化最快,最后一个索引变化最慢。注意,'C'和'F'选项不考虑底层数组的内存布局,而只是参考索引的顺序。'A'意味着在Fortran类索引顺序中读/写元素,如果a 是Fortran 在内存中连续的,否则为C样顺序。

欧式距离(对应L2范数):最常见的两点之间或多点之间的距离表示法,又称之为欧几里得度量,它定义于欧几里得空间中。n维空间中两个点x1(x11,x12,…,x1n)与 x2(x21,x22,…,x2n)间的欧氏距离:

np.bincount()它大致说bin的数量比x中的最大值大1,每个bin给出了它的索引值在x中出现的次数。下面,我举个例子让大家更好的理解一下:x中最大的数为7,因此bin的数量为8,那么它的索引值为0->7

x = np.array([0, 1, 1, 3, 2, 1, 7])

索引0出现了1次,索引1出现了3次......索引5出现了0次......

np.bincount(x)

因此,输出结果为:array([1, 3, 1, 1, 0, 0, 0, 1])

np.argmax()取出a中元素最大值所对应的索引a = np.array([3, 1, 2, 4, 6, 1]),b=np.argmax(a) 此时最大值位6,其对应的位置索引值为4,(索引值默认从0开始)

np.argsort():将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y。

KNN原理:找出距离最近的k个点对应的标签,然后找出出现次数最多的标签作为预测标签。

F范数:设A是mxn的矩阵,其F范数定义为:

numpy.split(ary, indices_or_sections, axis=0)Split an array into multiple sub-arrays.

>>> x = np.arange(9.0)
>>> np.split(x,3)
[array([ 0., 1., 2.]), array([ 3., 4., 5.]), array([ 6., 7., 8.])]

SVM

代码参见:https://blog.csdn.net/lifewang/article/details/80790493

matplotlib.rcParams设置:

matplotlib.rcParams[‘figure.figsize’]#图片像素

plt.rcParams['image.interpolation'] = 'nearest' # interpolation style(插值方式)

plt.rcParams['image.cmap'] = 'gray' # 设置 颜色 style

%load_ext autoreload %autoreload 2自动重新加载更改的模块

cell 4取range(49000,50000)为验证集,取range(0,49000)为训练集,在训练集中随机选择500张为dev集,以加快训练速度。

cell7图像预处理,均值减法(Mean subtraction)是预处理最常用的形式。它对数据中每个独立特征减去平均值,从几何上可以理解为在每个维度上都将数据云的中心都迁移到原点。在numpy中,该操作可以通过代码X -= np.mean(X, axis=0)实现。这个结果是将49000张图片的像素矩阵做了一个平均,得到了一个像素平均值矩阵,对应一张平均图片。

plt.figure(figsize=(4,4)):设置尺寸大小。

hstack(tup) 参数tup可以是元组,列表,或者numpy数组,返回结果为numpy的数组。按列顺序把数组给堆叠起来,最低维自动排序。

import numpy as np
a=[,,]
b=[,,]
print(np.hstack((a,b)))
输出:[ ]
import numpy as np
a=[[],[],[]]
b=[[],[],[]]
c=[[],[],[]]
d=[[],[],[]]
print(np.hstack((a,b,c,d))) 输出:
[[ ]
[ ]
[ ]]

svm_loss_naive(W, X, y, reg)W为权重,X为图片数据,y为标签,reg为正则化强度(regularization strength),返回值中gradient是梯度值,形状与W相同。

cell 16利用验证集去调节超参数(正则化参数和学习率)。

SVM梯度计算理解:

对上式求导dL/dw,j=yi时前面一项不存在了,j的规定中没有这一项,所以后一项对wyi求导剩下-xi,j≠yi时,对wj求导就是xi。

Softmax

Softmax梯度计算理解:

参见:https://blog.csdn.net/pjia_1008/article/details/66972060#commentsedit

参见:https://blog.csdn.net/yc461515457/article/details/51924604

其中第一个博客,当j!=yi时,分子应为exp(fj)。

Neural Network

思路参见:https://blog.csdn.net/lhppom/article/details/79595868

np.arange()

一个参数 默认起点0,步长为1。a = np.arange(3) 输出:[0 1 2]。

grads['b2'] = np.sum(dscores, axis = 0)/N

这里的除于N和上式W2的除于N是因为最后的损失是各个损失的和除于N,有求导项1/N

Cs231n-assignment 1作业笔记的更多相关文章

  1. 笔记:CS231n+assignment1(作业一)

    CS231n的课后作业非常的好,这里记录一下自己对作业一些笔记. 一.第一个是KNN的代码,这里的trick是计算距离的三种方法,核心的话还是python和machine learning中非常实用的 ...

  2. cs231n线性分类器作业 svm代码 softmax

    CS231n之线性分类器 斯坦福CS231n项目实战(二):线性支持向量机SVM CS231n 2016 通关 第三章-SVM与Softmax cs231n:assignment1——Q3: Impl ...

  3. zabbix 应用监控作业笔记 ansible-playbook

    目录 目录结构 zabbix-web.yaml zabbix-backup.yaml zabbix-nfs.yaml zabbix-mysql.yaml zabbix-server.yaml zabb ...

  4. DL基础:cs231n assignment 2

    cs231n assignment 2 20210913 - 20211005. 目录 cs231n assignment 2 fully-connected nets 基本思想 编程细节 复习mul ...

  5. DL基础:cs231n assignment 1

    cs231n assignment 1 20210804 - 20210808. 目录 cs231n assignment 1 总结 KNN 思想 cross-validation 编程细节 SVM ...

  6. 【cs231n作业笔记】一:KNN分类器

    安装anaconda,下载assignment作业代码 作业代码数据集等2018版基于python3.6 下载提取码4put 本课程内容参考: cs231n官方笔记地址 贺完结!CS231n官方笔记授 ...

  7. 笔记:CS231n+assignment2(作业二)(一)

    第二个作业难度很高,但做(抄)完之后收获还是很大的.... 一.Fully-Connected Neural Nets 首先是对之前的神经网络的程序进行重构,目的是可以构建任意大小的全连接的neura ...

  8. 【cs231n作业笔记】二:SVM分类器

    可以参考:cs231n assignment1 SVM 完整代码 231n作业   多类 SVM 的损失函数及其梯度计算(最好)https://blog.csdn.net/NODIECANFLY/ar ...

  9. 笔记:CS231n+assignment2(作业二)(二)

    一.参数更新策略     1.SGD 也就是随机梯度下降,最简单的更新形式是沿着负梯度方向改变参数(因为梯度指向的是上升方向,但是我们通常希望最小化损失函数).假设有一个参数向量x及其梯度dx,那么最 ...

  10. 笔记:CS231n+assignment2(作业二)(三)

    终于来到了最终的大BOSS,卷积神经网络~ 这里我想还是主要关注代码的实现,具体的CNN的知识点想以后在好好写一写,CNN的代码关键就是要加上卷积层和池话层. 一.卷积层 卷积层的前向传播还是比较容易 ...

随机推荐

  1. iOS学习——Quartz2D学习之UIKit绘制

    iOS学习——Quartz2D学习之UIKit绘制 1.总述 在IOS中绘图技术主要包括:UIKit.Quartz 2D.Core Animation和OpenGL ES.其中Core Animati ...

  2. 设置radio选中

    选中: $('.viewradio:input[name="istop"][value="' + getSelected().istop + '"]').pro ...

  3. .Net WebApi 初探

    实现服务层与api层共用,也就表明Service层就是api层. 关键类和接口 System.Web.Http.Dispatcher.DefaultHttpControllerSelector web ...

  4. How does the vuejs add the query and walk the object?

    让这个老实返回的页面添加特殊路由,这个页面常常都是登录注册.这次我们根据登录举例. 省略 { path:'/login?url=:url', name:'loginfirst', component: ...

  5. 『左偏树 Leftist Tree』

    新增一道例题 左偏树 Leftist Tree 这是一个由堆(优先队列)推广而来的神奇数据结构,我们先来了解一下它. 简单的来说,左偏树可以实现一般堆的所有功能,如查询最值,删除堆顶元素,加入新元素等 ...

  6. DataRead和DataSet的异同

    第一种解释 DataReader和DataSet最大的区别在于,DataReader使用时始终占用SqlConnection(俗称:非断开式连接),在线操作数据库时,任何对SqlConnection的 ...

  7. Asp.Net SignalR GlobalHost外部通知

    GlobalHost 外部通知 之前都是在集线器类中进行服务器对客户端的通知操作,但是在开发中往往会有需求监控某个系统 ,比如OA系统  上级领导在上面宣布下午两点要开会 那么就要通知到其他的人.这里 ...

  8. 这可能是最low的发布dotnet core站点到centos7教程

    前言 不得不说:我在chrome上写了好长一段,贴了23张图,然后一个crash..我想说我电脑上的chrome已经crash太多次了 以后一定要搞离线编辑的. 正文 什么是.net core,bal ...

  9. 【憩园】C#并发编程之概述

    写在前面 并发编程一直都存在,只不过过去的很长时间里,比较难以实现,随着互联网的发展,人口红利的释放,更加友好的支持并发编程已经成了主流编程语言的标配,而对于软件开发人员来说,没有玩过并发编程都会有点 ...

  10. Odd-e CSD Course Day 3

    Mocking 在提到Mocking時,其實有提到為什麼我們需要 Mocking from: Odd-e CSD course 可以透過上圖來了解這個概念,當我們需要用到 Mock 時,其實是因為我們 ...