CS231n学习笔记
文章平均质量分 75
AG9GgG
这个作者很懒,什么都没留下…
展开
-
Python基础知识准备-Numpy
PythonNumpyNumpy是Python中做科学计算的核心库之一,它提供了一个高效多维数组实体(object),和对这些数组的各种功能函数。Array一组同类型的数据,可以由一个非负整数来进行索引查询里面的元组。初始化a) 指定数组import numpy as npa = np.array[1,2,3])b = np.array([1,2,3],[4,5,6])b) ...原创 2018-11-24 14:02:18 · 174 阅读 · 0 评论 -
cs231n笔记-dropout正则化
L1、L2正则化L2正则化在神经网络中可能意义并不是很明确,有时候我们会在神经网络中选择其他方案。一个在神经网络中非常常用的方法:dropoutdropout每次在网络中正向传递时,我们在每一层随机将一部分神经元置0,每次正向传递时,随机被置0的神经元都不是完全相同的,每次处理网络中的一层。下图左侧为全连接神经网络,右边为dropout的版本。dropout之后的网络规模变小,我们只...原创 2019-03-19 17:39:31 · 429 阅读 · 0 评论 -
cs231n笔记-激活函数与权重初值
1. Sigmoid存在的问题:饱和神经元使得梯度消失。 当输入x过大或者过小时,从sigmoid的曲线都可以看到,区域水平,这将导致梯度消失。sigmoid不是一个零中心函数。 上游回传的梯度dLdf\frac{dL}{df}dfdL的数值正负皆有可能,权重的梯度dfdW=x\frac{df}{dW}=xdWdf=x,如果输入x恒为正,则相当于保留了上游梯度的符号,所有关于W的梯...原创 2019-02-20 15:27:02 · 810 阅读 · 0 评论 -
cs231n笔记-超参数优选
Hyperparameter Optimization第一步选择相当分散的数值,用几个epoch的迭代去学习。经过几个epoch可以很好地知道哪些值好或不好,然后做出相应调整,得到一个较好的调参区间。第二步(或许需要较长的时间)在上一步骤得到的区间内进行进一步的精确搜索。在训练循环中,有一个类似于寻找NaN这样的技巧,开始训练一些参数,在每个迭代或epoch观察cost,如果出现一个远...原创 2019-02-21 14:51:37 · 362 阅读 · 0 评论 -
cs231n笔记-批量归一化
批量归一化 Batch Normalization期望高斯范围内保持激活unit gaussian activations操作在每个唯独独立计算经验均值和方差归一化合理缩放通常在全连接层或者卷积层的后面,非线性操作的前面进行归一化操作。问题:tanh层是否真的希望得到高斯输入?合理放缩引入超参数γ\gammaγ和β\betaβ来对归一化后的x进行合理放缩1....原创 2019-02-21 14:35:11 · 380 阅读 · 0 评论 -
神经网络学习-卷积/池化
在处理图像时会使用一组卷积核,不同的卷积核描述不同的特征,以产生不同的激活映射。低阶图像特征提取中间图像特征提取高阶特征提取图片边缘特征稍微复杂一些的特征如边角信息斑点卷积总结:输入一个W1∗H1∗D1W_{1}*H_{1}*D_{1}W1∗H1∗D1的图片四个超参数:卷积核个数K卷积核大小F步长S填充大小P卷积计算得到的输出大小:W2∗H2∗D2W_{2}*H_{...原创 2019-02-03 15:00:17 · 279 阅读 · 0 评论 -
神经网络学习引入-优化(随机梯度下降)
通过之前的学习我们知道,计算不同权重值的损失函数来评价权重值的设置是不是我们希望的数值,以此来改变权重的设置。优化指的就是我们从某个解决方案开始,使用多种不同的迭代方法,然后逐步对它进行改进。最愚蠢的方法:随机搜索常用方法:计算各个方向的梯度数值梯度:计算limh−>0f(x+h)−f(x)hlim_{h->0}\frac{f(x+h)-f(x)}{h}li...原创 2018-12-03 18:26:07 · 609 阅读 · 0 评论 -
神经网络学习引入-反向传播
反向传播技术是神经网络的核心技术之一。如果一个运算我们能够使用计算图表式出来,那么我们就能够利用反向传播的方法,即从后往前递归地调用链式法则来计算梯度。一个简单的函数f(x,y,z)=(x+y)∗zf(x,y,z)=(x+y)*zf(x,y,z)=(x+y)∗z的计算图如下所示。假设输入为:x=-2, y=5, z=-4, 则输出f(x,y,z)=-12(图中绿色数字标出),令中间变量q=...原创 2018-12-04 16:40:45 · 353 阅读 · 0 评论 -
神经网络学习引入-图像分类的基本概述
1. Motivation动机尽管图像分类听起来很简单,但是它在现实中有大量的应用场景。许多明显是计算机视觉的任务都可以被简化成图像分类问题。2.挑战图片分类问题主要存在的挑战有:多视角问题(viewpoint variation):同一个物体的不同角度看到的图片大小多样化问题(scale variation):同一种类的个体存在大小的差异变形问题(deformation):研究的物...原创 2018-11-25 16:08:08 · 338 阅读 · 0 评论 -
神经网络学习引入-图片预处理Preprocessing与损失函数
图片数据预处理 Image data preprocessing样本:原始像素数据(随机选取于[0,255])在机器学习中:输入特征的规范化(perform normalization of your input features)在实际应用中:通过缩减每个特征的含义来中心化数据集具有重要意义(It is important to center your data by subtract...原创 2018-11-26 11:16:18 · 705 阅读 · 0 评论 -
神经网络学习引入-线性分类器 Linear Classification
线性分类器评分函数(score function):计算原始数据到所属分类的得分损失函数(loss function):量化预测得分和实际情况之间的认可度从图像到标签得分的参数映射定义评分函数f:RD−>RKf:R^{D}->R^{K}f:RD−>RK用于把原始图片像素映射到分类得分对于线性分类器,有评分函数:f(xi,W,b)=Wxi+bf(x_...原创 2018-11-26 10:49:50 · 516 阅读 · 0 评论 -
Python基础知识准备-SciPy&Matplotlib
SciPyNumpy提供一个高效的多维数组,一些数组计算的基本工具以及操作数组元素的函数。SciPy建立在它的基础之上,提供大量的操作numpy数组的函数,对于不同种类的科学计算工程都很有用。1.图片操作从内存中读取图片并存储到一个numpy数组中把numpy数组以图片的形式写会内存重构图片的大小(Resize)2.MATLAB文件操作函数scipy.io.loadmat和sc...原创 2018-11-24 23:43:00 · 286 阅读 · 0 评论 -
CS231n学习笔记-前言
从小学老师第一次说每一课都要预习,上完还要复习到现在,我一直也不是一个会复习的人。但是记忆本身就是一个需要不断重复强化的过程。为了把机器学习的第一个系统入门课程学好(之前是零散入门,需要用到什么就赶紧上网看两眼学一学这样),我决定本课程听课时记录英文笔记,然后在博客记录中文笔记,也是一种英语锻炼吧。毕竟有时候一个英文句子,大概明白什么意思和需要书面地把意思用中文写出来是两个不同的难度。(就当我是闲...原创 2018-11-24 23:21:31 · 130 阅读 · 0 评论 -
神经网络学习引入-邻近算法Nearest Neighbor Classifier
邻近分类算法这个分类算法与卷积神经网络无关,并且在实际应用中的使用也并不是特别广泛,但是通过对这个算法的学习,我们能够对图片分类问题有一个大致的解决思路。L1距离与L2距离给定的两个图片,将它们表现成两个矢量I1、I2,一个最容易理解、最容易被接受的对比它们的方法是L1距离。d1(I1,I2)=∑p∣I1p−I2p∣d_{1}(I_{1},I_{2})=\sum_{p}|I_{1}^{p}...原创 2018-11-25 17:21:25 · 2859 阅读 · 0 评论 -
cs231n笔记-深度学习软件(TensorFlow,Keras,PyTorch)
1.使用深度学习框架的三大理由:非常轻松地构建会使用一个庞大的计算图,且不需要去深入理解细节的东西框架会为我们处理反向传播的细节,这样,我们就只需要考虑网络的正向传播框架能够很好地在GPU上高效执行我们的训练(硬件透明)2.TensorFlow示例:在随机数据上使用一个两层全连接ReLU网络 with L2损失代码:可以划分为两个部分:定义计算图:我们可以定义自己...原创 2019-03-21 15:42:40 · 352 阅读 · 0 评论