对深度学习的理解
1.深度学习的最终目的即是为了通过训练让机器可以通过外界传递的信息,来做出某些判断及回应。而我们为了让机器完成这项工作,便要明确机器是如何来理解这些外接信息(例如图片,音频都是以矩阵形式),有了这条主线,我们解决问题,便会有一条清晰的主线(而不是被一堆奇怪的概念蒙蔽自己大脑)
2.深度学习的整体流程:第一步准备数据集(例如图片或音源)二。搭建模型(选用适当的处理函数)3.进行迭代训练,再没有得出结果,不断循环,(十分烧显卡,我的电脑最近感觉都快炸了)4.最终使用模型。
3.对数据进行处理,是我们需要关心的重点,也是重点(这次作业把我搞得要死,单单在作业方面就需要安装许多库)
准备工具tensorflow(不要用2.0,暂时使用旧版本!!!,新版本大换血,导致许多指令无法使用)2.CUDA10.0这个非常重要没有得话TensorFlow程序是无法使用的,Keras也不行。3.Keras,也是一个非常重要的扩充数据集的库。这些库都要提前安装,提醒后来者(否则你可能会像我一样,因为程序一直报错而烦躁)
4.对数据进行处理方式1.零均值化:将每一维原始数据减去每一维数据的平均值,将结果代替原始数据 2.数据归一化:原数据经过零均值化后,再将每一维的数据除以每一维得标准差or将不同维度的数据归一到相同的数值区间(ex:(-1,1))3.PCA和白化:原始数据零均值后,计算数据的协方差矩阵(协方差矩阵的计算方式可以参考我之前的博客,应该是在关于SLAM第一讲的学习),然后计算它的特征值及对应的特征向量,最后将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P, Y=P×X即为降维到k维后的数据
5.关于DCNN的网络结构分为三大部分:1.基础单元:其中可以使用全连接层,Pooling层,卷积层, Dropout层,反卷积层,卷积层,BatchNorm层
2.激活函数: (他决定了某个神经元是否被激活,这个神经元接收到的信息是否有用,是否该留下或抛弃,使我们对输入做的一种非线性转换)有许多种类例如sigmoid ,RELU函数以及一些他们的变形。其中RELU函数相对sigmoid函数,有许多优点:计算复杂度低;没有梯度小时的问题 3.可以表示稀疏关系
3.损失函数(损失函数是机器学习里最基础也是最为关键的一个要素,通过对损失函数的定义、优化,就可以衍生到我们现在常用的机器学习等算法中,它是用来衡量模型预测的好坏,或者二分类问题,or相互不独立的一对多问题。)
一般一个正常的神经网络里面的层数非常多,复杂完成难度大()
8.神经网络的超参数 1.学习率越小越好,大到一定程度会出现问题。 2. epoch:一个epoch指代所有的数据送入网络中完成一次前向计算及反向传播的过程。由于一个epoch常常太大,计算机无法负荷,我们会将它分成几个较小的Batches。(我的电脑好像一个Batch就快炸了) 3.Batchsize : Batch就是每次送入网络中训练的一部分数据,而Batch Size就是每个batch中训练样本的数量。4.iteration 迭代次数 iterations就是完成一次epoch所需的batch个数。假设有1000个数据,分成4个batch,那么batchsize就是250。运行所有的数据进行训练,完成1个epoch,需要进行4次iterations。