版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
人工智能和机器学习的关系时间:1956年地点:达特茅斯学院会议:用机器来模仿人类学习以及其他方面的智能“人工智能”一词的诞生,并作为一个独立的科研领域。人工智能(Artificialintelligence)是什么?理性思考的系统像人一样思考的系统理性行动的系统像人一样行动的系统——拉塞尔和诺文的《人工智能:一种现代方法》(第2版)计算机科学的一个分支,利用计算机模拟人类智力活动。——《现代汉语词典》定义人工智能模仿人或其他生命体思考或行为的技术人工智能让计算机从数据中学习而无需使用明确编程的人工智能技术机器学习人工智能机器学习机器学习(MachineLearning)是什么?在没有明确编程下,让计算机具有学习能力的研究领域。——机器学习之父亚瑟·塞缪尔1997年,IBM开发的深蓝(DeepBlue)象棋程序击败了世界冠军加里•卡斯帕罗夫(GarryKasparov)机器学习可以解决什么问题?给定数据的预测问题01数据清洗/特征选择02确定算法模型/参数优化03结果预测04机器学习不能解决什么问题?大数据存储/并行计算01做一个机器人02监督学习的流程框架监督学习没有正确答案的样本无法学习1.目标明确2.需要带标签的训练数据3.效果容易评估分类案例:身高1.65m,体重100kg的男人肥胖吗?根据肿瘤的体积、患者的年龄来判断良性或恶性?回归案例:如何预测上海浦东的房价?未来的股票市场走向?无监督学习即使没有正确答案样本也可以区分1.目标不明确2.不需要带标签的数据3.效果很难评估借助无监督学习细分用户场景:1.机器有一个明确的小鸟角色——代理2.需要控制小鸟飞的更远——目标3.整个游戏过程中需要躲避各种水管——环境4.躲避水管的方法是让小鸟用力飞一下——行动5.飞的越远,就会获得越多的积分——奖励强化学习强化学习不需要大量“数据喂养”,通过自己不停尝试学会某些技能模式识别=机器学习数据挖掘=机器学习+数据库统计学习近似等于机器学习计算机视觉=图像处理+机器学习语音识别=语音处理+机器学习模仿人或其他生命体思考或行为的技术人工智能让计算机从数据中学习而无需使用明确编程的人工智能技术机器学习人工智能机器学习人工智能、机器学习和深度学习的关系模仿人或其他生命体思考或行为的技术人工智能让计算机从数据中学习而无需使用明确编程的人工智能技术机器学习从大脑神经元网络得到启发而获得发展的机器学习技术深度学习人工智能机器学习深度学习深度学习(DeepLearning)是什么?杰弗里·辛顿深度学习创始人、图灵奖得主英国计算机学家和心理学家
深度学习是一个复杂的机器学习算法,学习样本数据的内在规律和表示层次,让机器像人一样具有分析学习能力,能够识别文字、图像和声音等数据。AlphaGo4:1人类2016年3月与韩国围棋界18次世界冠军获得者李世石进行了5场比赛,并以4胜1负的成绩赢得比赛。延时符AlphaGoZero100:0战胜AlphaGo深度学习可以解决什么问题?应该提取哪些特征?哪些特征的可表示性更强?深度学习=表示学习+浅层学习layer1layer2layer3深度学习的一般步骤321越大的数据量,越能够提供更多的特征信息大数据模型训练提供强有力的工具GPU一系列优秀的深度学习模型模型深度学习的核心因素人工智能神经网络深度神经网络深度学习机器学习神经元和感知器深度学习模型复杂度神经元(Neuron)是什么?神经元结构人工神经元生物神经元Outputofneuron=Y=f(w1·x1+w2·x2+b)输入权重综合处理输出感知器(Perceptron)是什么?美国科学家弗兰克·罗森布拉特与感知机inputlayeroutputlayer单层感知机模型Y=X*W+b其中(X=[x1,x2,x3,...],W=[w1,w2,w3,...])Y=((X1*W1+b1)*W2+b2)*W3+b3...,其中(X=[x1,x2,x3,...],W=[w1,w2,w3,...])多层感知机模型inputlayeroutputlayer单层感知机模型Y=X*W+b其中(X=[x1,x2,x3,...],W=[w1,w2,w3,...])神经网络本质是什么?神经网络结构神经网络结构神经网络的连接前馈神经网络(Feed-forwardNeuralNetwork,即FNN)前馈神经网络基本结构循环神经网络(RecurrentNeuralNetworks,即RNN)循环神经网络基本结构y0y1y2y0AAAAx0x1x2xTxinputlayerhiddenlayeroutputlayer上一个隐含层成为下一个隐含层的输入如果Tx增加通过Tx+1的方式解决深度神经网络(DeepNeuralNetworks,即DNN)包含多个隐藏层的多层感知器三层的深度神经网络的线性关系系数w的定义
layer1layer2layer3三层的深度神经网络的偏倚b的定义
layer1layer2layer3卷积神级网络(ConvolutionalNeuralNetworks,即CNN)卷积神经网络的一般性图像识别图像的卷积000110111011101010111001110101010100011011101110101011100111010101014342524244图像滤波器特征图池化层的维压缩2550000255000025500002552550025512800128最大池化输入功能图平均池化维压缩维压缩卷积神经网络的一般性图像识别生成式对抗网络(GenerativeAdversarialNetwork,即GAN)生成式对抗网络GAN的基本结构值Z生成器图像样本正确答案错误答案判别器输入输出输出输出12输入值输出值利用输出值进行学习深度学习的应用领域百度深度学习技术及应用国家工程实验室主任王海峰计算机视觉Computervision人头检测活体检测人脸识别人体检测/关键点检测行人追踪人体属性人体识别相关技术人脸识别相关技术车辆识别相关技车辆检测/跟踪车牌识别车位占空识别其它场景定制化条码识别生猪智能化养殖皮肤病识别自然语言理解Naturallanguageunderstanding语音识别AutomaticSpeechRecognition数据分析DataAnalysis图片艺术风格转移读唇语翻译传统翻译采用人工查词的方式,不但耗时长,而且错误率高。图像识别技术(OCR)的出现大大提升了翻译的效率和准确度,用户通过简单的拍照、截图或划线就能得到准确的翻译结果。体育赛事计算机视觉还有助于比赛和策略分析、球员表现和评级,以及跟踪体育节目中品牌赞助的可见性。农业半自动联合收割机可以利用人工智能和计算机视觉来分析粮食品质,并找出农业机械穿过作物的最佳路径。另外也可用来识别杂草和作物,有效减少除草剂的使用量。制造业计算机视觉也可以帮助制造商更安全、更智能、更有效地运行,比如预测性维护设备故障,对包装和产品质量进行监控,并通过计算机视觉减少不合格产品。交通自动驾驶汽车需要计算机视觉。汽车制造商已经通过摄像头、激光雷达、雷达和超声波传感器从环境中获取图像,研发自动驾驶汽车来探测目标、车道标志和交通信号,从而安全驾驶。安防中国在使用人脸识别技术方面无疑处于领先地位,这项技术被广泛应用于警察工作、支付识别、机场安检,甚至在北京天坛公园分发厕纸、防止厕纸被盗,以及其他许多应用。医疗由于90%的医疗数据都是基于图像的,因此医学中的计算机视觉有很多用途。比如启用新的医疗诊断方法,分析X射线,乳房X光检查,监测患者等。交通运输行业医疗护理行业——皮肤病诊断制造行业媒体广告行业服务行业案例:生猪智能化养殖同学们课后可以仔细观察一下自己的周边,是否就有人工智能或深度学习的影子?深度学习基本原理深度学习基本原理01深度学习任务深度学习算法是一种能够从数据中学习的算法。能够解决一些人为设计和使用确定性程序很难解决的问题。常见的深度学习任务包括:1、分类任务:通过计算机程序判别输入数据属于k类中的哪一类。如猫狗分类、数字识别。2、回归任务:通过计算机程序对输入的特定事件进行预测。如特定时间的房价预测。3、异常检测:通过计算机程序检测特定的事件。如信用卡欺诈检测,不合格产品检测。4、机器翻译:输入一种语言,通过计算机程序转化为另一种语言,媒体形式可能是声音也可能是文字。深度学习的主要挑战是模型必须在未见的样本上表现良好,而不是只在训练集上表现良好,也就是说需要泛化误差(不可直接获得)越小越好。01深度学习基本原理x1x2y000010100111单个神经元(感知器)我们设计一个感知器,让它来实现与(and)运算y=𝑓(𝑤1.𝑥1+𝑤2.𝑥2+𝑏)01深度学习基本原理x1x2y000010100111单个神经元(感知器)我们设计一个感知器,让它来实现与(and)运算𝟏,𝒇 𝒛 =
𝟎,y=𝑓(𝑤1.𝑥1+𝑤2.𝑥2+𝑏)我们如果选择阶跃函数作为激活函数。𝒛>
𝟎其他思考:如果是或运算,还能用这个感知器来实现吗?具体应该如何设计?01深度学习基本原理x1x2y000010100111单个神经元(感知器)我们设计一个感知器,让它来实现与(and)运算𝟏,𝒇 𝒛 =
𝟎,y=𝑓(𝑤1.𝑥1+𝑤2.𝑥2+𝑏)我们如果选择阶跃函数作为激活函数。𝒛>
𝟎其他如果选择:𝑤1=0.5;
𝑤2=0.5;
𝑏=-0.8进行验证当x1=x2=0时,y=f(-0.8)=0;当x1=1,x2=0时,y=f(-0.3)=0;当x1=0,x2=1时,y=f(-0.3)=0;当x1=x2=1时,y=f(0.2)=1;思考:如果是或运算,还能用这个感知器来实现吗?具体应该如何设计?01深度学习基本原理模型验证——留出法将数据随机分为两部分,比如选择70%的数据作为训练数据,剩下的30%数据作为测试数数据。使用训练数据集训练模型使其获得最优的性能,然后在测试数据集上测试模型的性能。如果模型在两个数据集的性能都表现出色,则模型是合适的,否则,模型不合适。原始数据训练数据测试数据01深度学习基本原理模型验证——留出法原始数据训练数据测试数据缺点:1.造成了数据资源浪费,如例子中浪费了30%的数据
2.模型性能严重依赖于训练数据和测试数据的划分。优点:简单、运算速度快通常会将训练数据中2/3~4/5的数据用于训练,剩余数据用于测试01深度学习基本原理模型选择——交叉验证交叉验证就很好地避免了留出法这一问题:该方法的基本思想是将训练数据划分成多个子集,并将每个子集轮流作为测试数据重复进行多次训练和测试。交叉验证的一种实现方法是k折交叉验证法(k-foldcross-validation):将训练集随机分为k个不相交的子集,将其中的第1个子集作为测试集,而将其余的数据作为训练集进行模型训练。然后,将其中的第2个子集作为测试集,而将其余的数据作为训练集进行模型训练。依次类推到第k个,从而得到k个测试结果,最后将这k个结果取平均来评价模型的性能。这样方法大大增加了模型的可靠性。01深度学习基本原理模型选择——交叉验证模型的欠拟合与过拟合(上)02模型欠拟合和过拟合欠拟合和过拟合产生原因图片来源:[1]《动手学深度学习》
AstonZhang误差(error)一般是指学习器根据模型计算得到的结果与样本真实值之间的差异。训练误差(training
error)一般是指学习器计算结果与训练集中样本真实值之间的差异。测试误差(test
error)一般是指学习器计算结果与测试集中样本真实值之间的差异。泛化误差(generalizationerror)一般是指学习器在新的样本上的误差。例:对二次函数𝑦
=
𝑏
+
𝑤1𝑥
+
𝑤2𝑥2
进行拟合,其中拟合结果如下面三幅图所示,分别为欠拟合、合适和过拟合的可视化结果。欠拟合 合适 过拟合模型欠拟合和过拟合02图片来源:[2]
《机器学习
》周志华为了在未见样本上表现得很好,应尽可能的学习出适用于未知样本的“普遍规律”,当把训练样本学得“太好”时,会存在把训练样本自身的特有性质当作样本总体的普遍性质,导致泛化性能下降,这样的现象称为过拟合。与过拟合相对应的就是欠拟合。欠拟合是指对于训练好的模型,数据的拟合程度不高,与拟合曲线相差较大;或指模型没有很好地捕捉到数据特征,不能够很好地拟合数据。欠拟合同样会导致泛化性能下降。。02模型欠拟合和过拟合欠拟合和过拟合区别欠拟合与过拟合在本质上都是模型对事物本质规律表达上的偏差。但两者的形成原因不同,欠拟合主要是由于模型太简单,不能表达复杂关系。而过拟合可能是模型太复杂,也可能是样本不典型。欠拟合与过拟合的表现不同,欠拟合在训练集和测试集上的性能都较差,而过拟合往往在训练集上有好的表现,而在测试集上的性能较差。模型欠拟合和过拟合02欠拟合解决办法过拟合和欠拟合都是机器学习算法要考虑的问题,其中欠拟合的情况比较容易克服,常见解决方法有:增加新特征,可以考虑加入特征组合、高次特征,来增大表达能力;添加多项式特征,这个在机器学习算法里面用的很普遍,例如将线性模型通过添加二次项或者三次项使模型泛化能力更强;使用非线性模型,比如SVM
、决策树、深度学习等模型。总之,欠拟合的解决办法通常是提高模型的表达能力。但在深度学习中比较少见,因为,深层网络的表现能力一般都足够强。
模型的欠拟合与过拟合(下)03模型拟合问题解决办法过拟合的缓解办法一些过拟合的缓解办法:增加典型数据
,从数据源头获取更多数据;数据增强(DataAugmentation):又名数据扩增,在不影响数据实质的情况下,让有限的数据产生更多的价值;。Dropout,在训练过程中,每次临时删除模型中的部分节点对其余节点进行训练,不断重复此过程。简化模型,减少网络的层数、神经元个数等均可以限制网络的拟合能力。正则化,添加惩罚项,对复杂度高的模型进行“惩罚”,限制权值变大。限制训练时间(early
stoptraining),设置阈值,限制训练时间。数据清洗(data
cleaning/Pruning):将错误的label
纠正或者删除错误的数据。结合多种模型,
用不同的模型拟合不同部分的训练集。03模型拟合问题解决办法数据增强(Data
Augmentation)数据增强相关方法Translation:移位;Horizontal/Vertical
Flip:水平/垂直翻转;RandomScale:尺度变换;Rotation:旋转变换;Noise:高斯噪声、模糊处理;Random
Crop:采用随机图像差值方式,对图像进行裁剪;包括尺度和长宽比增强变换;ColorJittering:对颜色的数据增强:图像亮度、饱和度、对比度变化;PCA
Jittering:首先按照RGB三个颜色通道计算均值和标准差,再在整个训练集上计算协方差矩阵,进行特征分解,得到特征向量和特征值,用来做PCAJittering;模型拟合问题解决办法03数据增强(Data
Augmentation)--
移位(Translation)移位只涉及沿X或Y方向(或两者)移动图像。在下面的示例中,我们假设图像在其边界之外具有黑色背景,并且被适当地移位。这种增强方法非常有用,因为大多数对象几乎可以位于图像的任何位置。这使你的卷积神经网络看到所有角落。原
图水平移位水平和垂直同时移位03模型拟合问题解决办法数据增强(Data
Augmentation)--
水平/垂直翻转(
Horizontal/Vertical
Flip
)可以对图片进行水平和垂直翻转。一些框架不提供垂直翻转功能。但是,一个垂直反转的图片等同于图片的180度旋转,然后再执行水平翻转。下面是我们的图片翻转的例子。垂直翻转水平翻转原图03模型拟合问题解决办法数据增强(Data
Augmentation)--
尺度变换(
Scale
)尺度变换就是图像缩放,对图像按照指定的尺度因子,进行放大或缩小。以下是图像缩放的示例。原图按比例缩放03模型拟合问题解决办法数据增强(Data
Augmentation)--
旋转变换(Rotation
)原图旋转变换值得注意的是,旋转变换往往需要配合尺度变换,否则容易使得我们的目标图像超出我们的边界。在部分框架中旋转变化在函数会自带缩放相关的参数。旋转变换表示旋转图像一定角度,改变图像内容的朝向旋转。如图展示了原图经过旋转变换的示例图。03模型拟合问题解决办法数据增强(Data
Augmentation)-- 噪声(
Noise
)高斯噪声(Gaussian
Noise
),是指图像中的噪声服从高斯分布。也就是大多数像素点都与无噪声图像中的对应点相差不大,相差越大的情况越少。椒盐噪声也称为脉冲噪声,是指图像中随机出现全亮点和全暗点的情况,看起来就像是往图像中撒了黑色胡椒和白色的盐。原图高斯噪声椒盐噪声03模型拟合问题解决办法数据增强(Data
Augmentation)--
抖动JitteringColor
Jittering
色彩抖动:色彩抖动是指对图像的亮度、饱和度(saturation)和色调(hue)进行随机变化形成不同光照及颜色的图片,达到数据增强的目的,尽可能使得模型能够使用不同光照条件的情形,提高模型泛化能力。PCA
Jittering:PCA
Jittering是实际上对RGB颜色空间添加扰动,从而达到对RGB颜色添加噪声的目的,具体为对RGB空间做PCA,然后做一个(0,
0.1)的高斯扰动。最早使用是在2012年的AlexNet,从论文实验中可以看出,PCA
jittering对于分类的性能提升比较显著。原图Color
JitteringPCA
Jittering03模型拟合问题解决办法Dropout介绍Dropout的思想其实非常简单:对于网络的每一层,随机的丢弃一些单元。正是因为在每一层随机地丢弃了一些单元,所以相当于训练出来的网络要比正常的网络小的多,在一定程度避免过拟合的问题。如下图所示的一个简单网络,因为每一个节点都有可能被丢弃,所以整个网络不会把某个节点的权重值赋很大,类似于L2正则化,能够起到减轻过拟合的作用。[1]Dropout:ASimpleWaytoPreventNeuralNetworksfrom
Overtting03模型拟合问题解决办法Dropout工作流程及使用使用Dropout之后,过程变成如下:首先随机(临时)删掉网络中一半的隐藏神经元,输入输出神经元保持不变然后把输入x通过修改后的网络前向传播,然后把得到的损失结果通过修改的网络反向传播。一小批训练样本执行完这个过程后,在没有被删除的神经元上按照随机梯度下降法更新对应的参数(w,b)。然后继续重复这一过程(1和2):恢复被删掉的神经元(此时被删除的神经元保持原样,而没有被删除的神经元已经有所更新)。关于Dropout需要注意的点:在测试集上(预测的时候)不要使用Dropout。常见的损失函数01 损失函数总述什么是损失函数?假设你在山顶,需要下山,此时你需要决定走哪个方向?首先需要找到所有可能下山的路径;其次尽量找不往上走的路径,避免消耗体力;最后,走自认为坡度最大的,下山最快的路径。损失函数就是针对自认为坡度最大、下山最快的路径选择是否好坏的重要评判标准。损失函数将映射决策的相关成本:决定走上坡的路径将耗费我们的体力和时间。决定走下坡的路径将使我们受益。因此,下坡的成本是更小的。01 损失函数总述什么是损失函数?在有监督机器学习算法中,我们希望在学习过程中最小化每个训练样本的误差。这是使用梯度下降等一些优化策略完成的,而这个误差的大小通过损失函数来度量。损失函数(Loss
Function):是定义在单个样本上的函数,是指一个样本的误差的映射。图片来源百度百科:/item/%E6%8D%9F%E5%A4%B1%E5%87%BD%E6%95%B0/1783236?fr=aladdin0-1损失函数(zero-one
loss)平方损失函数绝对值损失函数log对数损失函数Hinge
损失函数指数损失函数(
exponentialloss)感知损失函数
(perceptronloss)01 损失函数总述常见的损失函数0-1损失函数(0-1
loss
function)𝐿 y,
𝑓
x1,y
≠
𝑓
x=
0,y=
𝑓(x)其中,y表示真实值,𝑓(x)表示输入数据经过模型得到的预测值。从式子可以发现,当预测错误时,损失函数为1;当预测正确时,损失函数值为0。该损失函数不考虑预测值和真实值的误差程度,只要错误,就是1。02 常见的损失函数平方损失函数(quadratic
loss
function)𝐿 y|𝑓 x =(y
−
𝑓 x
)2是指预测值与实际值差的平方。绝对值损失函数(absolute
loss
function)该损失函数的意义和上面差别不大,这里是求取绝对值而非平方,差距不会被平方放大。𝐿 y,
𝑓 x =|y
−
𝑓(x)|02 常见的损失函数对数损失函数(logarithmic
loss
function)𝐿 y,
𝑃 y|x
=
−𝑙𝑜𝑔𝑃(y|x)该损失函数常用于极大似然估计的场合。P(y|x)通俗的解释就是:在当前模型的基础上,对于样本x,其预测值为y,也就是预测正确的概率𝑃(𝑌|𝑋)。由于概率之间的同时满足需要使用乘法,为了将其转化为加法,我们将其取对数。由于损失函数,当预测正确的概率越高时,其值应该是越小,因此,需要对对数值乘以-1。02 常见的损失函数指数损失函数(exponential
loss)指数损失函数的标准形式如下:𝐿 𝑌 𝑓 𝑋 =
exp[−𝑦𝑓 𝑥 ]其中𝑦
=
1或𝑦
=
−1
,
𝑓(x)
=
𝑤𝑥
+𝑏,指数函数具有以下特点:离群点、噪声非常敏感。经常用在AdaBoost算法中。02 常见的损失函数Hinge损失函数(Hinge
loss)Hingeloss一般分类算法中的损失函数,尤其是SVM,其定义为:𝐿 Y,
𝑓
𝑥
=
max(0,
1
−𝑦
∗
𝑓
𝑥
)其中
𝑦
=
1或𝑦
=
−1
,
𝑓(𝑥)
=
𝑤𝑥
+𝑏
,即为SVM的线性核。感知损失函数(perceptron
loss)感知损失函数的标准形式如下:𝐿 𝑦,
𝑓 𝑥 =
max(0,
−𝑓 𝑥 )其中𝑓(𝑥)
=
𝑤𝑥
+
𝑏,该函数具有以下特点:是Hinge损失函数的一个变种,Hinge
loss对判定边界附近的点(正确端)惩罚力度很高。而perceptron
loss只要样本的判定类别正确的话,它就满意,不管其判定边界的距离。它比Hinge
loss简单,因为不是max-margin
boundary,所以模型的泛化能力没
hinge
loss强。02 常见的损失函数0-1损失函数(zero-one
loss)平方损失函数绝对值损失函数log对数损失函数Hinge
损失函数指数损失函数(
exponentialloss)感知损失函数
(perceptronloss)01 损失函数总述常见的损失函数常见的代价函数01 代价函数总述什么是代价函数?损失函数(Loss
Function):是定义在单个样本上的函数,是指一个样本误差的映射。
代价函数(Cost
Function):是定义在整个训练集上的函数,是所有样本误差的映射,也就是所有损失函数值的映射。
目标函数(Object
Function):是指最终需要优化的函数,一般来说是经验风险+结构风险,也就是(代价函数+正则化项)。02
常见的代价函数L1
和
L2代价函数L1和L2是机器学习中的两个代价函数,用于最小化误差。L1代价函数,也被称为最小绝对值偏差(LAD)或者最小绝对值误差(LAE),该误差是真实值和预测值之间的所有绝对差之和。L2代价函数也被称为最小平方误差(LSE),用于最小化平方和误差,该误差是真实值和预测值之间所有平方差的总和(
i
表示第
i
个样本,N表示样本总数)均方误差(Mean
Squared
Error)均方误差是指参数估计值与参数真值之差平方的期望值;
MSE可以评价数据的变化程度,MSE的值越小,说明预测模型描述实验数据具有更好的精确度。均方根误差(Root
Mean
SquaredError)均方根误差是均方误差的算术平方根,能够直观观测预测值与实际值的离散程度。02
常见的代价函数平均绝对误差(MeanAbsoluteError)平均绝对误差是绝对误差的平均值
,平均绝对误差能更好地反映预测值误差的实际情况。通常用来作为回归算法的性能指标。
02
常见的代价函数交叉熵代价函数(Cross
Entry
loss)通常用做分类问题的代价函数。交叉熵是用来评估当前训练得到的概率分布与真实分布的差异情况,减少交叉熵损失就是在提高模型的预测准确率。其中
p(x)
是指真实分布的概率,q(x)
是模型通过数据计算出来的概率估计。N为样本的总数,M为类别的数量。比如对于二分类模型的交叉熵代价函数:02
常见的代价函数交叉熵损代价函数02
常见的代价函数二分类损失函数即有:−log f
𝑥−log 1
−f
𝑥预测输出q越接近真实样本标签0,损失L越小预测输出q越接近真实样本标签1,损失L越小横-损失函数L纵-预测输出f(x)求导过程:/p/6373194702
常见的代价函数代价函数L1和L2代价函数均方误差(MeanSquaredError)均方根误差(RootMeanSquaredError)平均绝对误差(MeanAbsoluteError)交叉熵代价函数(CrossEntrylossfunction)最优化算法(上)最优化算法01最优化算法与深度学习的关系训练⼀个复杂的深度学习模型可能需要数小时、数⽇,
甚⾄数周时间,最优化算法的表现直接影响模型的训练效率和模型参数的准确程度;理解各种最优化算法的原理以及其中超参数的意义将有助于更有针对性地调参,从而使深度学习模型表现更好。在⼀个深度学习问题中,我们通常会预先定义⼀个⽬标函数或者代价函数。有了⽬标函数以后,我们就可以使用最优化算法试图将其最小化。任何最大化没有他问题都可以很容易地转化为最小化问题,
只需令⽬标函数的相反数为新的目标函数即可。最优化算法01最优化在深度学习中的挑战最优化为深度学习提供了最小化损失函数的方法。本质上,最优化与深度学习的目标是有区别的。由于最优化算法的⽬标函数通常是⼀个基于训练数据集的损失函数,最优化的⽬标在于降低训练误差。而深度学习的目标在于降低泛化误差。为了降低泛化误差,除了使用最优化算法降低训练误差以外,还需要注意应对过拟合。最优化在深度学习中有很多挑战:局部最小值、鞍点等。最优化算法最优化的挑战
--
局部最⼩值对于目标函数f(x),如果f(x)在x上的值比在x邻近的其他点的值更小,那么f(x)可能是⼀个局部最小值。如果f(x)在x上的值是⽬标函数在整个定义域上的最小值,那么f(x)是全局最小值。举个例子,给定函数:𝑓 𝑥 =𝑥
∗
cos 𝜋
∗
𝑥 ,−1.0≤𝑥≤
2.0可以大致找出该函数的局部最小值和全局最小值的位置。需要注意的是,图中箭头所指示的只是大致位置。当⼀个最优化问题的数值解在局部最优解附近时,由于目标函数有关解的梯度接近或变成零,最终迭代求得的数值解可能只令目标函数局部最小化而非全局最小化。01图片来源:《动手深度学习》最优化算法最优化的挑战
–
鞍点鞍点(saddle
point)附近也可能造成梯度接近或变成零。举个例子,给定函数:𝑓 𝑥 =
𝑥3绘图即可找出该函数的鞍点位置。再举个定义在二维空间的函数的例子,例如:𝑓 𝑥,
𝑦 =𝑥2−
𝑦2该函数也存在鞍点位置。也许你已经发现了,该函数看起来像⼀个马鞍,而鞍点恰好是马鞍上可坐区域的中心。01图片来源:《动手深度学习》常见的最优化算法02最优化问题解决办法最优化算法的目标:跳出局部极值点或鞍点,寻找全局最小值;使训练过程更加稳定,更加容易收敛。针对不同的任务,采用的目标函数不一样。比如对于回归预测模型,有L1正则化和L2正则化,对应的优化算法也不同。下面,我们介绍几种常用的最优化方法。02常见的最优化算法参数更新率批量梯度下降算法批量梯度下降算法是梯度下降算法最原始的形式,通过批次所有样本的损失函数,来计算模型参数的更新值。梯度下降算法的原理:代价函数
关于参数
的梯度将是目标函数上升最快的方向。而要最小化代价函数,只需要将参数沿着梯度相反的方向前进一个步长,就可以实现目标函数的下降。02常见的最优化算法批量梯度下降算法参数更新率批量梯度下降的优点:1)一次迭代是对所有样本进行计算,此时利用矩阵进行操作,实现了并行。2)由全数据集确定的方向能够更好地代表样本总体,从而更准确地朝向极值所在的方向。当目标函数为凸函数时,一定能够得到全局最优。批量梯度下降的缺点:1)当样本数目很大时,每迭代一步都需要对所有样本计算,训练过程会很慢。2)当目标函数不为凸函数时,可能陷入局部最优。最优化算法(下)02常见的最优化算法随机梯度下降算法随机梯度下降利用单个样本计算损失函数,直接用反向传播算法更新模型参数。
随机梯度下降的优点:(1)在学习过程中加入了噪声,提高了泛化误差。(2)由于不是在全部训练数据上的损失函数,而是在每轮迭代中,随机优化某一条训练数据上的损失函数,这样每一轮参数的更新速度大大加快。
随机梯度下降的缺点:(1)不能在一个样本中使用矩阵计算,不能并行操作,学习过程变得很慢。(2)单个样本并不能代表全体样本的趋势。在pytorch中,随机梯度下降算法的类名称为torch.optim.SGD。
02常见的最优化算法小批量梯度下降算法(平均随机梯度下降算法)小批量梯度下降,是对批量梯度下降以及随机梯度下降的一个折中办法。随机梯度下降算法中模型参数的更新方向不稳定和,我们常采用平均随机梯度下降算法。其计算梯度不同的是,不是每得一个梯度就更新一次参数,而是得到几个梯度后,对其求平均,然后确定参数的更新值。批量梯度下降算法随机梯度下降算法小批量梯度下降算法更新方向稳定不稳定相对稳定梯度更新所需样本全部样本单个样本小批量(自定义)能否并行可以不可以可以02牛顿梯度下降算法常见的最优化算法图片来源:https:///p/e426c3eca226𝑓 𝑥 ≅
𝑓 𝑥0 +(𝑥
−
𝑥0)𝑓′ 𝑥0求
𝑓 𝑥 =0根据泰勒公式的数值解将𝑓
𝑥
=0𝑓′0代入得𝑓(𝑥0)𝑥 ≅𝑥0−
𝑥因为凸函数的优化问题,就是求导数为0的位置。我们将上述f(x)用f(x)的导数代替,就可以快速求出f(x)的导数为0的点。牛顿梯度下降算法要优于最速梯度下降算法,但是它需要计算海森矩阵(Hessian
matrix)。02常见的最优化算法动量梯度下降算法引入动量的梯度下降算法中,参数的更新量不仅与梯度有关,还与原来的更新量有关。也就是在原来的更新表达式中加入了上一次更新与其权重的乘积项。从而促使参数更新更稳定地向最优点方向移动。𝑣𝑡+1=𝜇𝑣𝑡−
𝛼𝛻𝑓(𝜃𝑡)𝜃𝑡+1=𝜃𝑡
+
𝑣𝑡+1式中v为参数的更新量,t为迭代的次数,θ为模型参数,f为目标函数,∇为梯度,α和μ都为常量。02常见的最优化算法Nesterov动量梯度下降算法然而,引入动量的梯度下降算法也存在缺陷,那就是在低曲率的地方,也就是梯度很小的地方,更新量主要表现为原来的更新量,不懂得转弯。为克服上述问题,常采用1983年Nesterov提出的方法,常称为Nesterov动量。与经典动量方法不同的是,它先调整梯度的方向,再改变大小,从而避免了低曲率的地方,更新方向不容易更改的问题。𝑣𝑡+1=𝜇𝑣𝑡−𝛼𝛻𝑓(𝜃𝑡+
𝜇𝑣𝑡)𝜃𝑡+1=𝜃𝑡
+
𝑣𝑡+1式中v为参数的更新量,t为迭代的次数,θ为模型参数,f为目标函数,∇为梯度,α和μ都为常量。02常见的最优化算法ADAGRAD自适应学习率算法学习率的设置是一个两难选择:其值过高可能导致在接近极值附近来回振荡,而不收敛;过低又可能引起在接近极值时,更新量趋近0,从而导致学习速度慢。基于上述想法,美国加州大学John
Duchi等2011年提出ADAGRAD。在pytorch中,该方法的类名称为torch.optim.Adagrad。式中v为参数的更新量,t为迭代的次数,θ为模型参数,f为目标函数,∇为梯度,α为学习率。02常见的最优化算法ADADELTA自适应学习率算法ADAGRAD方法随着迭代次数增加,导致分母的累计值越来越大,经过多次迭代后最终趋近于0而停止参数更新。为克服上述问题,为此,2012年,纽约大学的Matthew
D.
Zeiler提出了自适应学习率方法ADADELTA。在pytorch中,该方法的类名称为torch.optim.Adadelta式中分母为前W次梯度的平方的平均值的平方根,分子为前W次更新值的平方的平均值的平方根
。常见的最优化算法02图片来源:https://www.cnblogs.com/tornadomeet/p/3430312.html最优化算法
–
DropConnectDropOut与DropConnect的区别:DropConnect与Dropout不同的地方是在训练神经网络模型过程中,它不是随机的将隐层节点的输出变成0,而是将节点中的每个与其相连的输入权值变成0。(DropOut是针对输出时变为0,而DropConnect是针对输入时变化)常见的最优化算法02停止标准有三种第二类停止标准:当泛化损失和进程(如迭代次数)的商大于指定的值时就停止。最优化算法
–
早停法(Early
Stopping)在训练的过程中,如果迭代次数太少,算法容易欠拟合,而迭代次数太多,算法容易过拟合。早停法可以限制模型最小化代价函数所需的训练迭代次数。早停法通常用于防止训练中过度表达的模型泛化性能差。第一类停止标准:当泛化损失超过一定的阈值时,停止训练。第三类停止标准:完全依赖于泛化错误的变化,即当泛化错误在连续S个周期内增长的时候停止。常见的最优化算法02最优化算法
–
早停法Early
Stopping开始时,将训练的数据分为训练集和验证集。每个批次结束后(或每N个批次后):在验证集上获取测试结果,记录目前为止最好的验证集精度,而随着批次的增加,如果在验证集上发现满足停止标准,则停止训练。将之前处理测试集时准确率最高时的权重作为网络的最终参数。图片来源:/weixin_40519315谢谢深度学习框架概述深度学习框架Theano框架第一个Python深度学习框架深度学习框架基本设计方向:以计算图为框架的核心,采用GPU加速计算定义、优化和计算数学表达式,特别是多维数组2017年9月28日,LISA实验宣布Theano停止开发深度学习新手仍可使用Theano来练习,对于职业开发者建议使用其他主流深度学习框架Tensorflow框架2015年11月10日,Google宣布推出全新的机器学习开源工具TensorFlowTensorFlow和Theano都是基于计算图实现自动微分系统TensorFlow使用数据流图进行数值计算在工业界拥有完备的解决方案和用户基础TensorFlow2无缝部署网络模型至工业系统TensorFlow框架是业界使用最为广泛的深度学习框架之一Keras框架Keras是一个高层神经网络API,使用TensorFlow、Theano及CNTK作为后端Keras支持快速实验,能迅速把想法转换为结果。Keras的缺点:过度封装导致丧失灵活性,程序运行过于缓慢,许多bug都隐藏于封装之中,用户主要在调用接口。严格意义上讲,Keras构建于第三方框架之上,更像一个深度学习接口。Caffe框架Caffe是一个清晰、高效的深度学习框架,核心语言是C++,支持命令行、Python和MATLAB接口,可以在CPU上运行,也可以在GPU上运行Caffe的优点是简洁快速,缺点是缺少灵活性2017年,Facebook正式宣布开源Caffe2,兼具表现力、速度和模块性Caffe2追求轻量级,在保有扩展性和高性能的同时,强调便携性Caffe2的核心C++库能提供速度和便携性,使Python和C++API用户可以轻松地在Linux、Windows、iOS、Android等操作系统上进行原型设计、训练和部署。MXNet框架MXNet支持C++、Python、R、Scala、Julia、MATLAB及JavaScript等语言,支持命令和符号编程,可以运行在CPU、GPU、集群、服务器、台式机或者移动设备上2017年1月,MXNet项目进入Apache基金会,成为Apache的孵化器项目MXNet具有超强的分布式支持能力,卓越的内存、显存优化技术MXNet的缺点是接口文档不够完善CNTK框架2016年1月25日,微软公司在GitHub仓库上正式开源了微软研究院开发的计算网络工具集CNTKCNTK的性能比Caffe、Theano、TensorFlow等主流工具都要强,支持CPU和GPU模式,同TensorFlow/Theano一样,把神经网络描述成一个计算图的结构CNTK表现比较均衡,没有明显短板,且在语音领域效果比较突出飞桨(PaddlePaddle)集深度学习核心训练和推理框架、基础模型库、端到端开发套件、丰富的工具组件于一体,是中国首个自主研发、功能丰富、开源开放的产业级深度学习平台。飞桨(PaddlePaddle)PyTorch框架PyTorch官网地址/PyTorch是一个基于Torch的开源Python机器学习库,用于自然语言处理等应用程序,更加灵活,支持动态图,提供了Python接口,能够实现强大的GPU加速,支持动态神经网络。PyTorch支持动态图的创建,在深度学习平台定义模型主要有两种方法:静态图模型的缺陷是在处理数据前必须定义好完整的一套模型,才能够处理所有的边际情况。动态模型能够自由地定义模型,作为Numpy的替代者,使用强大的GPU,支持Tensor库,极大地加速了计算。PyTorch提供的功能1、提供强大的N维数组操作,包括索引、切片和转置等。2、通过LuaJIT实现C接口。3、线性计算和数值优化。4、生成神经网络以及能量模型,能量模型是生成模型的一种形式。5、快速高效GPU支持,可嵌入到iOS和Android后端。PyTorch的优势1、简洁。PyTorch的设计追求最少的封装,设计遵循Tensor→Variable(autograd)→nn.Module三个由低到高的抽象层次,且联系紧密,可以同时进行修改和操作。代码易于理解,更少的抽象、更直观的设计。2、速度。PyTorch的灵活性不以速度为代价,PyTorch的速度表现胜过TensorFlow和Keras等框架,是相当简洁且高效快速的框架。3、易用。入门简单,设计符合人类思维,让用户尽可能专注于实现自己的想法,所思即所得,不需要考虑太多关于框架本身的束缚。4、活跃的社区。PyTorch提供完整的文档和循序渐进的指南,Facebook人工智能研究院对PyTorch提供了强力支持。PyTorch官网地址/基础环境:一台PC设备一张高性能NVIDIA显卡(可选)Ubuntu系统搭建环节1.Anaconda环境搭建2.PyTorch环境搭建Anaconda环境搭建查看操作系统是否安装了Anaonda3右击桌面,选择“OpenTerminalHere”,打开linux的“终端”。查看操作系统是否安装了Anaonda3输入代码shAnaconda3-2020.07-Linux-x86_64.sh人工智能和机器学习的关系时间:1956年地点:达特茅斯学院会议:用机器来模仿人类学习以及其他方面的智能“人工智能”一词的诞生,并作为一个独立的科研领域。人工智能(Artificialintelligence)是什么?理性思考的系统像人一样思考的系统理性行动的系统像人一样行动的系统——拉塞尔和诺文的《人工智能:一种现代方法》(第2版)计算机科学的一个分支,利用计算机模拟人类智力活动。——《现代汉语词典》定义人工智能模仿人或其他生命体思考或行为的技术人工智能让计算机从数据中学习而无需使用明确编程的人工智能技术机器学习人工智能机器学习机器学习(MachineLearning)是什么?在没有明确编程下,让计算机具有学习能力的研究领域。——机器学习之父亚瑟·塞缪尔1997年,IBM开发的深蓝(DeepBlue)象棋程序击败了世界冠军加里•卡斯帕罗夫(GarryKasparov)机器学习可以解决什么问题?给定数据的预测问题01数据清洗/特征选择02确定算法模型/参数优化03结果预测04机器学习不能解决什么问题?大数据存储/并行计算01做一个机器人02监督学习的流程框架监督学习没有正确答案的样本无法学习1.目标明确2.需要带标签的训练数据3.效果容易评估分类案例:身高1.65m,体重100kg的男人肥胖吗?根据肿瘤的体积、患者的年龄来判断良性或恶性?回归案例:如何预测上海浦东的房价?未来的股票市场走向?无监督学习即使没有正确答案样本也可以区分1.目标不明确2.不需要带标签的数据3.效果很难评估借助无监督学习细分用户场景:1.机器有一个明确的小鸟角色——代理2.需要控制小鸟飞的更远——目标3.整个游戏过程中需要躲避各种水管——环境4.躲避水管的方法是让小鸟用力飞一下——行动5.飞的越远,就会获得越多的积分——奖励强化学习强化学习不需要大量“数据喂养”,通过自己不停尝试学会某些技能模式识别=机器学习数据挖掘=机器学习+数据库统计学习近似等于机器学习计算机视觉=图像处理+机器学习语音识别=语音处理+机器学习模仿人或其他生命体思考或行为的技术人工智能让计算机从数据中学习而无需使用明确编程的人工智能技术机器学习人工智能机器学习PyTorch基本使用Tensor张量的概念Tensor实际上就是一个多维数组(multidimensionalarray)标量(0阶张量)向量(1阶张量)矩阵(2阶张量)张量(大于等于3阶张量)1.2数据类型CPUtensorGPUtensor32-bitfloatingpointtorch.FloatTensorTorch.cuda.FloatTensor64-bitfloatingpointtorch.DoubleTensorTorch.cuda.DoubleTensor16-bitfloatingpointN/ATorch.cuda.HalfTensor8-bitinteger(unsigned)torch.ByteTensorTorch.cuda.ByteTensor8-bitinteger(signed)torch.CharTensorTorch.cuda.CharTensor16-bitinteger(signed)torch.ShortTensorTorch.cuda.ShortTensor32-bitinteger(signed)torch.IntTensorTorch.cuda.IntTensor64-bitinteger(signed)torch.LongTensorTorch.cuda.LongTensortorch.Tensor创建张量的方法torch.tensor():用现有数据创建张量如torch.tensor([[1.,
-1.],[1.,-1.]])torch.*:创建具有特定大小的张量如torch.randn()
#满足标准正态分布的一组随机数据torch.*_like:创建与另一个张量具有相同大小和相似类型的张量如torch.rand_like()tensor.new_*:创建与其他张量具有相似类型但大小不同的张量查看张量的属性查看Tensor类型tensor1
=
torch.randn(2,3) #形状为(2,3)一组从标准正态分布中随机抽取的数据tensor1.dtype
#
torch.float32查看Tensor维度tensor1.ndim
#查看维度查看Tensor形状或尺寸tensor1.shape
#查看形状或尺寸查看Tensor是否存储在GPU上tensor1.is_cuda查看Tensor的梯度tensor1.gradTensor在CPU、GPU、numpy之间的转换CPU
tensor转GPU
tensorcpu_tensor.cuda()GPU
tensor
转CPU
tensorgpu_tensor.cpu()numpy转为CPU
tensortorch.from_numpy(numpy_test
)CPU
tensor转为numpy数据cpu_tensor.numpy()注意:GPU
tensor不能直接转为numpy数组,必须先转到CPU
tensor。如果tensor是标量的话,可以直接使用
item()
函数(只能是标量)将值取出来:loss_output.item()一个张量tensor可以从Python的list或序列构建一个空张量tensor可以通过规定其大小来构建用Python的索引和切片来获取和修改一个张量tensor中的内容每一个张量tensor都有一个相应的单一数据类型的一维数组torch.Storage用来保存其数据改变tensor的函数操作会用一个下划线后缀来表示函数torch.squeeze(input,
dim=None,out=None)对数据的维度进行压缩数学操作函数torch.abs(inputs,out=None)用来计算输入张量的每个元素的绝对值函数torch.add(input,value,out=None),对张量input逐元素加上标量value后得到一个新的张量数理统计函数torch.mean(input),返回输入张量所有元素的均值函数torch.mean(input,dim,out=None),返回输入张量指定维度上的所有元素的均值比较操作函数torch.eq(input,other,out=None),比较元素相等性函数torch.eq(input,other,out=None),比较元素相等性函数torch.equal(input,other),比较两个张量的形状和元素值张量tensor的使用构建一个简单的神经网络1.首先导入PyTorch包。2.设置网络用到的权重。3.编写向前传播、向后传播过程。4.计算损失函数。5.权重。张量的概念及使用(上)张量的概念及使用01张量的概念
tensor即“张量”,是一种数据结构,实际上跟numpy数组、向量、矩阵的格式基本一样。但是是专门针对GPU来设计的,可以运行在GPU上来加快计算效率。
可以简单理解为:一个可以运行在gpu上的多维数据。Tensor的使用01Torch.device()设备类型我们学习到了张量的基本使用,那么在神经网络中,张量有哪些常见的使用呢?Torch.device()表现了torch.Tensor被分配的设备类型的类,其中分为‘cpu’和‘cuda’两种类型。可以通过torch.cuda.current_device()返回当前设备标号,也可以通过tensor.device()来获取其属性。具体操作如下所示:>>>importtorch#导包>>>torch.device('cuda')#使用当前的cuda设备device(type='cuda')>>>torch.device('cpu')#设置当前设备为CPUdevice(type='cpu')Tensor的使用01
可以利用字符或字符+序号的方式来分配设备,如果设备序号没有显示则表示此tensor被分配到当前设备。#通过字符串和设备号设置>>>torch.device('cuda',0)#设置当前设备为0号cudadevice(type='cuda',index=0)>>>torch.device('cpu',0)
#设置当前设备为0号cpudevice(type='cpu',index=0)Tensor的使用01通过代码自动分配>>>device=torch.device(“cuda”iftorch.cuda.is_available()else“cpu”)#通用
张量的设备分配>>>data=torch.Tensor([1])#声明一个Tensor>>>data.to(device)tensor([1.])#Tensor置于cpu设备上>>>data.to(device)
tensor([1.],device='cuda:0')#Tensor置于cuda设备上Tensor的使用01创建一维、二维、三维张量a=torch.Tensor([1,2,3])b=torch.Tensor([[1,2,3],[4,5,6]])c=torch.Tensor([[[1,2,3],[4,5,6],[7,8,9]]])print('一维张量:',a)print('二维张量:',b)print('三维张量:',c)代码:结果:torch.Tensor(list):根据列表创建多维张量,维度一致Tensor的使用01创建全零/全1张量input=torch.zeros(2)#一维全0张量print(input)print(torch.zeros(2,3))#2行3列的全0张量print(torch.ones(2,3))#2行3列的全1张量print(torch.zeros_like(input))#打印与input相同大小的全0张量print(torch.ones_like(input))#打印与input相同大小的全1张量代码:结果:torch.zeros(*sizes,out=None,..)/torch.ones(*sizes,out=None,..):返回大小为sizes的对应全零/全1张量torch.zeros_like(input,..)/torch.ones_like(input,..):返回与input相同尺寸的对应全零/全1张量Tensor的使用01创建全x张量print(torch.full((3,4),3.14))#3行4列全3.14张量print(torch.full_like(input,2.3))#打印与input相同大小的全2.3矩阵量代码:结果:torch.full(size,fill_value,…)返回大小为size,各元素值都为fill_value的张量Tensor的使用01等差数列张量print(torch.arange(2,8))#默认单位步长是1的等差数列张量print(torch.linspace(2,10,steps=5))#步长为2的等差数列代码:结果:torch.arange(start=0,end,step=1,…)函数,返回结果为[start,end),步长为step的张量等比数列张量torch.linspace(start,end,steps=100)返回从[start,end],间隔中的插值数目为steps的tensor。torch.logspace(start,end,steps=100,base=10)返回steps个从base^start到base^end的等比数列。print(torch.logspace(1,3,steps=3,base=10))#以10为公倍数的等比代码:结果:Tensor的使用01随机张量input=torch.eye(3)#3维单位对角张量print(torch.rand(2,2))#2行2列的[0,1]均匀分布随机数print(torch.rand_like(input))#3行3列的[0,1]均匀分布随机数print(torch.randint(1,10,(2,2)))#2行2列的[1,10]均匀分布随机数print(torch.randn(2,2))#2行2列的标准正态分布随机数代码:结果:torch.rand(*size,out=None,dtype=None,…)返回[0,1]之间均匀分布的随机数值,形状大小由size决定torch.rand_like(input)随机数满足[0,1]均匀分布,形状大小由input决定torch.randint(low=0,high,size,…)返回均匀分布的[low,high]之间的整数随机值。torch.randn(*sizes,out=None,…)返回大小为sizes,均值为0,方差为1的标准正态分布的随机数值。张量的概念及使用(下)Tensor的使用01张量维度扩大Tensor.expand(*sizes):返回tensor的一个新视图,单个维度扩大为更大的尺寸,也可以扩大为更高维。扩大tensor不需要分配新内存,只是仅仅新建一个tensor的视图。x=torch.tensor([[1],[2],[3]])print(x.size())print(x.expand(3,4))#维度扩大为3行4列print(x.expand(-1,2))#-1表示自动计算数值print(x)代码:结果:Tensor的使用01张量维度重复Tensor.repeat(*sizes)沿着指定的维度重复tensor,不同于expand(),本函数复制的是tensor中的数据。x=torch.tensor([1,2,3])#定义一个1*3tensorprint(x.repeat(4,2))#复制x中的元素值使变成4*6的tensor(1*4,2*3)print(x)print(x.repeat(4,2,1).size())#复制x中的元素变成3个维度:[4,2,3]代码:结果:Tensor的使用01维度扩展前面学到过torch.squeeze()函数进行压缩,去除tensor维度。torch.unsqueeze(input,dim,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026浙大宁波理工学院招聘派遣制工作人员1人笔试参考题库及答案详解
- 2026江西南昌华云气象广告有限公司劳务派遣岗位(平面设计师)招聘1人笔试备考题库及答案详解
- 2026年襄樊市樊城区街道办人员招聘考试备考题库及答案解析
- 2026年昌都地区幼儿园教师招聘笔试备考试题及答案解析
- 2026广东中山市小榄镇兆龙社区招聘工作人员5名笔试备考题库及答案详解
- 2026四川广安市金城公证处招聘劳务派遣公证员助理1人笔试备考题库及答案详解
- 2026江苏南京理工大学分析测试中心招聘1人笔试参考试题及答案详解
- 2026年广东省汕头市街道办人员招聘考试备考试题及答案解析
- 2026福建泉州发展集团权属企业开源集团、发展地产集团第一批项目制人员招聘5人考试备考题库及答案详解
- 2026甘肃张掖民乐县第一中学招聘专业技术人员21人笔试参考题库及答案详解
- CJ/T 521-2018生活热水水质标准
- 外墙装修安全协议合同
- T-CSTM 00985-2023 低损耗介质板的复介电常数测试 分离式圆柱谐振腔法
- 山东兴丰新能源科技有限公司年产30000吨锂离子电池负极材料干燥项目环评报告表
- IATF16949体系推行计划(任务清晰版)
- 《物联网技术及其在智能建造中的应用》(中文电子课件)
- 维修改造合同简易版
- JB-T 8236-2023 滚动轴承 双列和四列圆锥滚子轴承游隙及调整方法
- GB/T 43934-2024煤矿土地复垦与生态修复技术规范
- 人工智能训练师(中级数据标注员)理论考试题库大全(含答案)
- 降低呼吸机相关性肺炎发生率品管圈护理课件
评论
0/150
提交评论