百度深度学习集训营已经正式开营,每个阶段的作业都将有各自的奖励,欢迎大家学习~
PS:如遇帖子过期、审核不通过的情况,请先复制内容保存在word文档,然后根据提示,完成个人实名验证,刷新后重新粘贴复制的内容,即可提交~
欢迎大家报名参加~
1月9日作业:
作业9-1:在第二章中学习过如何设置学习率衰减,这里建议使用分段衰减的方式,衰减系数为0.1, 根据ResNet目前的训练情况,应该在训练到多少步的时候设置衰减合适?请设置好学习率衰减方式,在眼疾识别数据集iChallenge-PM上重新训练ResNet模型。
作业9-1奖励:在作业中随机各抽取5名同学送出飞桨本+数据线+飞桨贴纸
回复帖子形式: 作业9-1:XXX
抽奖作业截止时间:2020年1月13日中午12点之前
作业9-2奖励:在作业中随机各抽取5名同学送出飞桨本+数据线+飞桨贴纸
回复帖子形式: 作业9-2:XXX
抽奖作业截止时间:2020年1月13日中午12点之前
1月7日作业:
作业8:如果将LeNet模型中的中间层的激活函数Sigmoid换成ReLU,在眼底筛查数据集上将会得到什么样的结果?Loss是否能收敛,ReLU和Sigmoid之间的区别是引起结果不同的原因吗?请发表你的观点
作业8奖励:在作业中随机各抽取5名同学送出飞桨本+数据线+飞桨贴纸
回复帖子形式: 作业8:XXX
获奖同学:#820 thunder95、#819 你还说不想我吗、 #818 百度用户#0762194095、#817 呵赫 he、#816 星光1dl
1月2日作业
作业7-1 计算卷积中一共有多少次乘法和加法操作
输入数据形状是[10, 3, 224, 224],卷积核kh = kw = 3,输出通道数为64,步幅stride=1,填充ph = pw =1
完成这样一个卷积,一共需要做多少次乘法和加法操作?
提示:先看输出一个像素点需要做多少次乘法和加法操作,然后再计算总共需要的操作次数
提交方式:请回复乘法和加法操作的次数,例如:乘法1000,加法1000
作业7-1奖励:抽取5人赢得飞桨定制本+数据线,截止时间2020年1月6日中午12点之前
回复帖子形式: 作业7-1:XXX
作业7-2奖励:从正确答案中抽取5人获得飞桨定制本+50元京东卡,截止时间2020年1月6日中午12点之前
12月31日作业
作业6-1:
1.将普通神经网络模型的每层输出打印,观察内容
2.将分类准确率的指标 用PLT库画图表示
3.通过分类准确率,判断以采用不同损失函数训练模型的效果优劣
4.作图比较:随着训练进行,模型在训练集和测试集上的Loss曲线
5.调节正则化权重,观察4的作图曲线的变化,并分析原因
作业6-1奖励:抽取5人赢得飞桨定制本+数据线 ,回复帖子形式: 作业6-1:XXX
作业6-2:
正确运行AI Studio《百度架构师手把手教深度学习》课程里面的作业3 的极简版代码,分析训练过程中可能出现的问题或值得优化的地方,通过以下几点优化:
(1)样本:数据增强的方法
(2)假设:改进网络模型
(2)损失:尝试各种Loss
(2)优化:尝试各种优化器和学习率
目标:尽可能使模型在mnist测试集上的分类准确率最高
提交实现最高分类准确率的代码和模型,我们筛选最优结果前10名进行评奖
作业6-2奖励:飞桨定制本+50元京东卡
12月25日作业
12月23日作业
作业4-1:在AI studio上运行作业2,用深度学习完成房价预测模型
作业4-1奖励:飞桨定制本+ 《深度学习导论与应用实践》教材,选取第2、3、23、123、223、323…名同学送出奖品
作业4-2:回复下面问题,将答案回复帖子下方:
通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?
回复帖子形式: 作业4-2:XXX
作业4-2奖励:在12月27日(本周五)中午12点前提交的作业中,我们选出最优前五名,送出百度定制数据线+《深度学习导论与应用实践》教材
12月17日作业
完成下面两个问题,并将答案回复在帖子下面,回帖形式:作业3-1(1)XX(2)XX
作业奖励:在2019年12月20日中午12点之前提交,随机抽取5名同学进行点评,礼品是本+数据线
12月12日作业
获奖者:第12名:飞天雄者
12月10日作业
作业1-1:在AI Studio平台上https://aistudio.baidu.com/aistudio/education/group/info/888 跑通房价预测案例
作业1-1奖励:最先完成作业的前3名,以及第6名、66名、166名、266名、366名、466名、566名、666名的同学均可获得飞桨定制大礼包:飞桨帽子、飞桨数据线 、飞桨定制logo笔
作业1-1的获奖者如图:
作业1-2:完成下面两个问题,并将答案发布在帖子下面
①类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?假设和参数是什么?优化目标是什么?
②为什么说AI工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
作业1-2奖励:回复帖子且点赞top5,获得《深度学习导论与应用实践》教材+飞桨定制本
点赞Top5获奖者:1.飞天雄者 2.God_s_apple 3.177*******62 4.学痞龙 5.故乡237、qq526557820
作业截止时间2020年1月10日,再此之前完成,才有资格参加最终Mac大奖评选
报名流程:
1.加入QQ群:726887660,班主任会在QQ群里进行学习资料、答疑、奖品等活动
2.点此链接,加入课程报名并实践:https://aistudio.baidu.com/aistudio/course/introduce/888
温馨提示:课程的录播会在3个工作日内上传到AI studio《百度架构师手把手教深度学习》课程上
作业4.2:
首先都有以下几个步骤
1. 数据处理:读取数据和预处理操作,在这一步骤中基本上是相同的,只是对于飞桨来说要将数据转化为特定的格式(这对不同 网络有不同要求),以及转化成飞桨内置的格式。
2. 模型设计:网络结构,对于同一个问题,网络的架构肯定是一样的,只是对于飞桨来说实现网络架构只需几行代码,而对于 仅仅用Python实现来说这就比较困难了,比如我们那个房价预测用了几十行代码,更别说对于一些复杂的神经网络了。
3. 训练配置:对于飞桨来说实现随机梯度下降以及损失函数的话,只需一句代码就可以了,但是自己实现的话,那需要编写一 个函数自己来实现,同时飞桨内置了很多优化器算法都函数以及损失函数,想用啥一句话就可以调用了。
4. 训练过程:都是两层循环,且外层循环是遍历整个数据集的次数,内层循环是对数据集分批次遍历,且都包括前向计算,计 算损失,后向传播等步骤,不同的是对于实现这些步骤来说,飞桨的话只需一两行代码就可以了,而不用框架实现的话,就需要 单独 对每一层进行这些步骤,这就显得很麻烦了。
不过飞桨还可以将训练好的模型保存下来循环使用,而不用框架的话好像不行。
其次对于运行速度来说,使用飞桨肯定是要优于不使用框架的,因为在飞桨底层实现上,很多算法都是用C++,Fortran等语言实现,而这些语言计算效率往往比Python快几十甚至百倍。同时飞桨还能将模型放在GPU上跑,而由于神经网络的计算可以用并行实现,这样GPU的多核计算的效率肯定远远大于CPU的。尤其是在一些大型网络上,两者速度相差可达到上百倍。
再次使用飞桨能很方便的将模型部署在不同的环境中,比如云端,手机,以及一些单片机上。而仅仅用Python实现的话,要实现这个非常的困难。
其实使用飞桨框架主要是可以让我们不用去纠结具体算法的实现,而是专注于问题本身。因为很多时候我们并不知道对于一个实际问题,什么样的网络架构是最好的,什么参数是最好的,这是个NP难的问题,我们只有通过不停的去尝试不同的网络,这样才能找出相对好的网络架构。而飞桨的话能让我们很方便很快速的实现自己不同的想法。但是如果我们不用框架去实现,都是自己一步步的去实现,这工作量可想而知。
作业4-2:
相同点:基本思路和流程都是准备数据,前向计算,计算损失,计算梯度,更新参数这五步。
不同点:使用飞浆编写模型使得代码行数大大缩短,提高了工作效率,且编写起来更为容易,参数也更好调控。
总体上来说,虽然这个案例中,两者效果大致相同,但以后网络层数更多,结构更复杂,是无法简单用python编写的。飞浆框架是经过大规模产业实验和专家级工程时开发测试过的,无论是程序执行效率和代码的健壮性上都时可靠的,最重要的事开发人员可关注与模型和数据本身,而不必对计算机有深入了解即可以较低的难度入门尝试机器学习。
作业4-2:
相同点:无论是使用飞浆框架还是python编写房价预测程序,或者其他预测问题,都可以把问题划分为以下几步:加载数据和预处理,定义模型,配置模型训练策略和资源配置,模型训练,模型评价,保存模型,模型预测,模型部署等。也就是说解决问题的步骤、程序的结构相同。
不同点:python手工编写训练神经网络的代码进行网络训练,不但要考虑模型本身,还要有较高的代码编写能力,需要对编程语言有深刻的理解、对各种算法及优化策略等要有深刻理解并高效实现。而飞浆框架是经过大规模产业实验和专家级工程时开发测试过的,无论是程序执行效率和代码的健壮性上都时可靠的,最重要的是开发人员可关注与模型和数据本身,即可以较低的难度入门深度学习。在训练好的情况下,双方预测效果差不多,而用飞桨框架的训练耗时要低得多。
作业4-2:
在程序结构上,二者相差不大,都包括数据处理、 模型设计、训练配置、 训练过程、 保存模型部分。
在编写难易程度上,paddlepaddle拥有强大的函数库,只需调用,编写容易。
在模型预测效果上,二者几乎一样,因为网络结构一样、训练参数一样的情况下训练好的模型一样。
在训练耗时上,paddlepaddle能利用GPU进行计算,并且优化了计算过程,利用AI Studio上的算力能极大地加速训练过程。
作业3-1
(1)
(2)
import numpy as np
p = np.random.randn(10,10)
q = (p > 0)
q = q.astype(int)
print(q.sum())
作业4-2:
通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?
首先,无论是利用python还是深度学习框架来写房价预测案例,整个程序的结构是基本一致的,都是包括数据准备、定义模型、前向计算、反向更新、最终训练模型。
利用python和其强大的计算工具我们可以自己手写简单的模型,这与使用深度学习框架并没有太大不同,并且对于初学者,用python写模型能够帮助初学者掌握机器学习的思路和熟悉python语言的使用。
一旦我们需要处理较为复杂的任务的时候,比如大样本的图像数据,深层的神经网络。那么利用python来编写模型就会非常复杂。程序代码量会很大并且很难调试。
使用深度学习框架,几乎所有的方法都已经被框架定义好,使用者只需要使用相应的方法函数,就可以轻松定义模型进行训练,使得复杂任务和简单任务都模式化同一化,非常利于使用者,进行算法模型的的深入关注,而不必在编写上耗费大量时间
并且深度学习框架是由许多资深工程师编写的,底层有许多的优化,在简单任务上时间优势不明显但是一旦任务复杂使用深度学习框架带来的优势是非常明显的
4-2
emmmmm看图说话,H是手写单层神经网络,P是代表用飞桨写的单层神经网络,都是用来对房价进行预测的loss值和所用时间(从最外层循环开始计时,结束时返回时间差),飞桨均高于手写的。
但是时间都很低,两者的loss平均值都在0.15以下,time在1.25以下。花费并不是很长,由于数据原因,并没有进行比较泛化能力(PR曲线)
个人分析,飞桨这类的框架所应用更广,所以包含的东西更多,耗费时间长于手写代码,但是就编写难易而言,当我需要两层、三层的代码甚至更深的网络时,飞桨的编写难度将比手写简单很多,所花费的时间应该也会比手写的时间更少。这就是飞桨框架的优势。
作业4-2:
python编写的模型和基于paddle编写的模型在整体流程上是一致的,如都需要经过数据处理,前向计算,损失计算,梯度计算等等过程。
区别在于前者对于这些过程需要程序员手动编写打打提高了项目时间和难度,而paddle降低了人们对于深度学习的入门门槛。
并且在程序结构和运行时间方面,python编写的模型结构因人而异,编码风格不统一,运行时间不确定(不同编码方式造成时间不同);
paddle编写的模型则结构一致,运行时间只和数据量与硬件相关,便于控制。
作业3.1


作业3.2
作业4-2:
同:都包含以下基本内容:样本数据读取、特征工程、数据归一化、模型选择(前向计算)、损失函数、通过梯度下降优化模型参数、交叉验证
保存模型参数、使用模型进行预测;
飞桨本质上是对Python编写的模型的封装和抽象。
异:一、飞桨对上述基本内容进行了模块化封装:
1.数据处理:读取数据和预处理操作
2.模型设计:网络结构(假设)
3.训练配置:优化器(寻解算法)和计算资源配置
4.训练过程:循环调用训练过程,包括前向计算+计算损失(优化目标)+后向传播
5.保存模型:将训练好的模型保存;
二、封装了很多数据工具类、模型工具类、优化器工具类等;
三、作为深度计算框架实现了GPU并行计算和分布式计算;
四、封装了模型参数的定义、保存、读取方式;
五、在很多深度学习领域都做出了优秀实践并开源源码;
六、飞桨正在做着大量的理论推广和业务场景落地;
。。。
作业4-2:
通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?
同:都包含以下基本内容:样本数据读取、特征工程、数据归一化、模型选择(前向计算)、损失函数、通过梯度下降优化模型参数、交叉验证
保存模型参数、使用模型进行预测;
飞桨本质上是对Python编写的模型的封装和抽象。
异:一、飞桨对上述基本内容进行了模块化封装:
1.数据处理:读取数据和预处理操作
2.模型设计:网络结构(假设)
3.训练配置:优化器(寻解算法)和计算资源配置
4.训练过程:循环调用训练过程,包括前向计算+计算损失(优化目标)+后向传播
5.保存模型:将训练好的模型保存;
二、封装了很多数据工具类、模型工具类、优化器工具类等;
三、作为深度计算框架实现了GPU并行计算和分布式计算;
四、封装了模型参数的定义、保存、读取方式;
五、在很多深度学习领域都做出了优秀实践并开源源码;
六、飞桨正在做着大量的理论推广和业务场景落地;
。。。
作业4-2:通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?
相同点:具有相同的5个基本步骤,即:数据处理,模型设计,训练配置,训练过程,保存过程。
不同点:1. paddle模型的程序结构更加明晰。paddle通过对程序编写的通用模块封装,形成固定的结构。
2. paddle模型的编写难度更低。固化的程序结构具有很高的可读性,十分方便程序员快速编写内容,减少程序员的冗余工作。
3. paddle模型的性能和功能更强大,相比于自己用python编写的模型,一般具有更好的预测效果和更低的资源消耗,包括内存和时间。因为paddle模型经过大量的实践和优化,整体功能和性能比直接编写要好很多很多。
作业4-2:
通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?
相同点:
整个房价预测的算法流程一样。输入数据一样,结果相差不大。
不同点:
代码量:因为深度学习框架封装了大量的API供用户调用,所以在编写深度学习算法时,我们无需再编写复杂的底层实现。所以相对来说,使用深度学习框架实现算法的代码量相对较少。但我们这次的房价预测案例的神经网络相对简单,层数较少,所以代码量相差不大。
程序结构:
数据结构一样,均采用numpy加载和存储数据。
数据处理也都一样。这部分需要我们自己去编写。
算法流程:算法流程基本一致,都是五步即数据处理,模型设计,训练配置,训练过程和保存模型。
但具体的差异除了数据处理外,差异较大。
训练输出:输出的模型的数据结构不一致。
模型的预测结果:模型的预测结果基本一致。但相对来说,使用paddle的模型效果较好。原因在于优化的api。
训练的耗时:
如果使用GPU进行运算的话,深度学习框架相对来说,更胜一筹。如果使用相同的训练环境,
当epoch=50,batchsize=100等训练参数均为一致的情况下,
python所花费的时间大概在0.03-0.04之间。而深度学习框架花费的事件在0.3-0.4s之间,可见python花费的时间较短。
方便性:
深度学习框架里封装了大量的API,可方便的调用。而使用python编写时,需要自定义这些,不仅耗时,而且可能会bug。
所以基于python实现的深度学习框架是十分pythoncal的。
作业4-2:
通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?
相同点:
整个房价预测的算法流程一样。输入数据一样,结果相差不大。
不同点:
代码量:因为深度学习框架封装了大量的API供用户调用,所以在编写深度学习算法时,我们无需再编写复杂的底层实现。所以相对来说,使用深度学习框架实现算法的代码量相对较少。但我们这次的房价预测案例的神经网络相对简单,层数较少,所以代码量相差不大。
程序结构:
数据结构一样,均采用numpy加载和存储数据。
数据处理也都一样。这部分需要我们自己去编写。
算法流程:算法流程基本一致,都是五步即数据处理,模型设计,训练配置,训练过程和保存模型。
但具体的差异除了数据处理外,差异较大。
训练输出:输出的模型的数据结构不一致。
模型的预测结果:模型的预测结果基本一致。但相对来说,使用paddle的模型效果较好。原因在于优化的api。
训练的耗时:
如果使用GPU进行运算的话,深度学习框架相对来说,更胜一筹。如果使用相同的训练环境,
当epoch=50,batchsize=100等训练参数均为一致的情况下,
python所花费的时间大概在0.03-0.04之间。而深度学习框架花费的事件在0.3-0.4s之间,可见python花费的时间较短。
方便性:
深度学习框架里封装了大量的API,可方便的调用。而python需要自己实现,不仅耗时,而且可能会出bug。
所以基于python实现的深度学习框架是十分pythoncal的。
5-1:了解下对于计算机视觉,有哪些常见的卷积神经网络?
答:LeNet ; AlexNet,ResidualNet,R-CNN, YOLO, SSD, darknet,RetinaNet,VGG
5-2:在手写数字识别的任务上,哪种优化算法的效果最好?多大的学习率最优?通过Loss的下降趋势来判断 Adam优化,学习率1e-4左右。
作业4-2:
共同点:都包含这几个过程:加载输入,模型设计、训练配置、 训练过程、 保存模型。
不同点:
1. Paddle的优势:
过程非常简单易用,套路模块化,固定化。还在不断的学习中,加油。
2.Paddle的劣势:
作为新人,我们现在对深度学习的过程理解程度没有那么深,而模型过程又比较长,前期的过程无法给到我们最直观的感受;不像Python编写,可以直观的输出每一步的结。
作业5-1:了解下对于计算机视觉,有哪些常见的卷积神经网络?
LeNet ; AlexNet,ResidualNet,R-CNN, YOLO, SSD, darknet,RetinaNet,VGG
作业5-2:在手写数字识别的任务上,哪种优化算法的效果最好?多大的学习率最优?(通过Loss的下降趋势来判断)
从图中的结果中可知,与SGD相比,其他3种优化算法学习得更快,而且速度基本相同,其中AdaGrad的学习进行得稍微快一点,这里它的学习率设置的是0.01。实际上实验结果会随学习率等超参数、神经网络的结构(几层深等)的不同而发生变化。不过,一般而言,与SGD相比,其他3种优化算法可以学习得更快,有时最终的识别精度也更高。
作业4-2:
作业4-2:
通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?
1.相同点:
算法的流程一样;网络的结构一样;输入到模型的数据一样;相同优化器的情况下,效果相差不大
2.不同点:
代码量差别较大,paddle不需要我们定义一些简单枯燥的网络,都是调用封装的API来实现一些功能
因此结构要比用python编写网络清晰,代码更加简洁,更容易上手
另外paddle框架对算法做了很多优化,在优化器的选择上就体现了出来
保存和使用模型也更加便捷
运行时间:EPOCH_NUM = 50 ,BATCH_SIZE = 10,打印损失每10次训练打印一次的情况下,训练过程用时
paddle框架:2.625537872314453 s
python:0.18547487258911133 s
可见纯python的情况效率更高,但是可能由于对资源的占用较大,没有进行优化,不太适合大规模的网络
作业4-1:
源代码中应该有一个错误吧。就是在测试时是重新从文件里读取倒数第10行的数据然后直接用来测试。个人觉得应该是先将数据进行归一化然后在用来测试,或者也可以直接使用 load_data方法输出的test_data来预测。以下是我修改之后的结果。可以看到预测还是挺好的。
作业4-2:
说道写模型,可能最难的应该算是反向传播了。如果直接使用python来写模型,那么需要自己实现反向传播的函数,因此会比较麻烦,而使用深度学习框架则会方便许多,至少不用考虑这个,框架会自动求导。
使用深度学习框架就像是搭积木,因此相较与自己用python来实现模型会简单得多,而且更容易看懂模型的结构。
测试结果这个不好说,毕竟没有使用评判标准来评判,只是简单的查看了其中几条数据的预测结果。