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. SignalR学习笔记(二)高并发应用

    虽然SignalR借助Websocket提供了很强大的实时通讯能力,但是在有些实时通讯非常频繁的场景之下,如果使用不当,还是会导致服务器,甚至客户端浏览器崩溃. 以下是一个实时拖拽方块项目的优化过程 ...

  2. WebApi系列~不支持put和delete请求的解决方法

    回到目录 原因 由于安装了webDAV模块引起的,在web.config里的system.webserver节点,将webdav模块移动 将http请求的权限开放 实现 <system.webS ...

  3. 看板中的WIP限制

    WIP限制并不是真的要限制你的进度,事实上正相反. 什么是WIP限制? 在敏捷开发中,WIP限制决定了每种情况下的工作流中可以存续的最大工作量.限制进行中的工作数量可以更容易辨识团队工作流中的无效工作 ...

  4. 用gogs轻松搭建个人的git服务器

    因为公司和家里电脑里面有些项目需做版本控制或者说共享吧,就想搭个自己的git服务器:原本想用gitlab,不过我服务器配置比较差,查了一下,看到gogs,眼前一亮: Gogs 的目标是打造一个最简单. ...

  5. PE知识复习之PE扩大节

    PE知识复习之PE扩大节 一丶为什么扩大节 上面我们讲了,空白区添加我们的代码.但是有的时候.我们的空白区不够了怎么办.所以需要进行扩大节. 扩大节其实很简单.修改节数据对齐后的大小即可. 并且在PE ...

  6. 使用 curl 进行 ssl 认证

    目录 SSL 认证 认证实现 问题解决 curl不支持 https SSL certificate problem, verify that the CA cert is OK curl: (60) ...

  7. tuxedo开发

    近来一直在和某电信的系统做对接开发,需要从对方系统(tuxedo)中查询数据后进行显示,本来是个挺简单的事情,无奈tuxedo这个东西以前真是没听说过,网上能用的资料也不多,真是苦了我这段时间,还好已 ...

  8. gulp基本设置

    var gulp = require('gulp'); var clean = require('gulp-clean'); var concat = require('gulp-concat'); ...

  9. .Net语言 APP开发平台——Smobiler学习日志:如何快速实现Timer计时功能

    最前面的话:Smobiler是一个在VS环境中使用.Net语言来开发APP的开发平台,也许比Xamarin更方便 一.目标样式 我们要实现上图中的效果,需要如下的操作: 1.从工具栏上的”Smobil ...

  10. 第37章 资源所有者密码验证(Resource Owner Password Validation) - Identity Server 4 中文文档(v1.0.0)

    如果要使用OAuth 2.0资源所有者密码凭据授权(aka password),则需要实现并注册IResourceOwnerPasswordValidator接口: public interface ...