首页 AI Studio教育版 帖子详情
作业帖 | 百度深度学习集训营
收藏
快速回复
AI Studio教育版 其他师资培训 807309 953
作业帖 | 百度深度学习集训营
收藏
快速回复
AI Studio教育版 其他师资培训 807309 953

百度深度学习集训营已经正式开营,每个阶段的作业都将有各自的奖励,欢迎大家学习~

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《百度架构师手把手教深度学习》课程上

 

49
收藏
回复
全部评论(953)
时间顺序
月下临风
#742 回复于2020-01

作业7-1  计算卷积中一共有多少次乘法和加法操作

考虑偏置项的情况下,卷积核的单次运算所用乘法和加法数相同,
则:
加法或乘法数 = 输出通道数 x 输入通道数 x 输出特征图cell数 x 卷积核单次运算所需的加法或乘法数
64*10*(224+2-3+1)*(224+2-3+1)*(3*3*3) = 867,041,280
所以,所需的加法或乘法数为867041280

 

0
回复
aaaLKgo
#743 回复于2020-01

作业7-2:

0
回复
边陲
#744 回复于2020-01

作业6-1

 

(1)

运行课件2-8,下面是修改部分,直观查看feature

Feature的tensor转化为可视化的图片数据

 

打印图片特征,plt.subplot(1,4,1),图片显示布局,1行4列,第1张

输出结果

下图红框仅位置示意

(2)训练loss和acc

Loss突然增大,可能原因是过拟合,忽然拟合之前数据有些差异的另一批次的数据,loss忽然加,train_acc下降,而BN层将数据纠正。

增大batch_size,为原来(128)的4倍(512),结果如上图所示,佐证已经过拟合。test acc见第4、5小题

 

 

(3)交叉熵(cross_entropy):

 

均方误差,报错尚未调试成功:

Error: Tensor holds the wrong type, it holds float, but desires to be int64_t

 

理论上分类问题使用交叉熵好,均方误差可能在后续的优化过程中会变成非凸,导致多个局部最优解。

 

(4)(5)

 

 

fluid.regularizer.L2Decay(regularization_coeff), regularization_coeff表示正则化系数

上图可以看出,训练已经过拟合,参数越大,表示损失权重越大,丢失的信息越多,模型最终越简单,针对此项目效果越好。Test acc 在rc=0.6,0.9时,没有过拟合的震荡。

0
回复
莲子心
#745 回复于2020-01

作业6-1:

3       fluid.layers.cross_entropy

softmax_with_cross_entropy

0
回复
友友的路
#746 回复于2020-01

最近出差,所以提交作业晚了,现在补上,希望时间还赶得及。

作业4-2:

通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?

解答:两者对比上:

1.程序结构是相同的,都需要经过数据处理,模型配置,训练配置,模型训练和保存

不同点:

1. 飞桨编写难度低,飞桨内部封装好了很多深度学习常用函数,开发人员不再使用Python重复编写,效率大大提高

2. 相同算法,模型预测效果相差不大,但飞桨经过优化,训练耗时肯定比一般用户编写的Python程序少。

3.使用飞桨,用户的关注重点可以放在具体业务场景中,不必在基础数学函数的编写和一些常用优化方法上消耗开发精力。

0
回复
莲子心
#747 回复于2020-01

作业6-1 

4

5

正则化权重分别0.1   0.01   0.001 时,图形与图4基本一致,均是在0-500中间出现拐点,即模型出现过拟合的情况

0
回复
莲子心
#748 回复于2020-01

作业7-1

1
乘法操作:(224+2*1-3+1)*(224+2*1-3+1)*(3*3)*3*64*10 = 867041280
加法操作:(224+2*1-3+1)*(224+2*1-3+1)*(8+1)*3*64*10 = 867041280

0
回复
t
tichen858
#749 回复于2020-01

作业6-1:

1.将普通神经网络模型的每层输出打印,观察内容

第一次训练过程中第一张图片第一通的数据据如下:

loading mnist dataset from ./work/mnist.json.gz ......

输入形状为:[100, 1, 28, 28]

输入层第1个元素为:name tmp_1, dtype: VarType.FP32 shape: [28, 28] lod: {}

dim: 28, 28

layout: NCHW

dtype: float

data: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.320312 0.457031 0.457031 0.457031 0.457031 0.316406 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.160156 0.683594 0.890625 0.980469 0.980469 0.980469 0.980469 0.886719 0.316406 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.015625 0.152344 0.5625 0.910156 0.933594 0.980469 0.980469 0.980469 0.980469 0.980469 0.96875 0.589844 0.0351562 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.371094 0.980469 0.980469 0.980469 0.988281 0.980469 0.980469 0.980469 0.980469 0.980469 0.933594 0.265625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.238281 0.605469 0.925781 0.980469 0.980469 0.980469 0.988281 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.675781 0 0 0 0 0 0 0 0 0 0 0 0 0 0.777344 0.890625 0.980469 0.980469 0.980469 0.980469 0.980469 0.988281 0.980469 0.980469 0.980469 0.980469 0.980469 0.269531 0.101562 0 0 0 0 0 0 0 0 0 0 0 0 0 0.628906 0.792969 0.980469 0.980469 0.980469 0.980469 0.980469 0.75 0.980469 0.980469 0.980469 0.980469 0.980469 0.144531 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.175781 0.777344 0.980469 0.980469 0.691406 0.449219 0.230469 0.980469 0.980469 0.980469 0.980469 0.648438 0.0664062 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.140625 0.222656 0.222656 0.101562 0.585938 0.816406 0.980469 0.980469 0.980469 0.683594 0.0859375 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.238281 0.882812 0.988281 0.996094 0.988281 0.988281 0.988281 0.601562 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0390625 0.457031 0.738281 0.980469 0.988281 0.980469 0.980469 0.980469 0.777344 0.457031 0.457031 0.457031 0.457031 0.457031 0 0 0 0 0 0 0 0 0.160156 0.683594 0.683594 0.683594 0.683594 0.683594 0.707031 0.980469 0.980469 0.980469 0.988281 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.453125 0 0 0 0 0 0 0 0 0.230469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.988281 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.222656 0 0 0 0 0 0 0 0 0.230469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.988281 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.773438 0.136719 0 0 0 0 0 0 0 0 0.699219 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.507812 0.378906 0.375 0.375 0.375 0.375 0.375 0.375 0.375 0.171875 0 0 0 0 0 0 0 0 0 0.925781 0.980469 0.980469 0.980469 0.980469 0.980469 0.980469 0.71875 0.144531 0.0351562 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.160156 0.816406 0.980469 0.980469 0.980469 0.980469 0.71875 0.46875 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.210938 0.449219 0.449219 0.449219 0.449219 0.0664062 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

 

第一层卷积输出形状为:[100, 20, 28, 28]

第一张图片一通道输出元素为:name tmp_6, dtype: VarType.FP32 shape: [28, 28] lod: {}

dim: 28, 28

layout: NCHW

dtype: float

data: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0368596 0.071371 0.172294 0.324093 0.400449 0.396427 0.351772 0.292434 0.151425 0.0281424 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0184298 0.0880531 0.183803 0.533743 0.937131 1.19793 1.40244 1.45374 1.3343 1.07806 0.739572 0.309554 0.0281424 0 0 0 0 0 0 0 0 0 0 0 0.00179803 0.0184468 0.0781925 0.187371 0.376065 0.691805 1.0534 1.32078 1.66127 1.98569 2.16294 2.20357 2.14499 1.75941 1.09824 0.54512 0.123038 0 0 0 0 0 0 0 0 0 0 0 0.0424488 0.138043 0.331034 0.829611 1.33822 1.55918 1.66008 1.92476 2.16646 2.45614 2.40841 2.35815 2.30227 1.70583 0.926959 0.335563 0.0806845 0 0 0 0 0 0 0 0 0 0.0274199 0.0836431 0.202854 0.528058 1.04049 1.39997 1.72802 1.92885 1.92828 2.10435 2.2652 2.08199 2.01466 2.13337 2.30777 1.81573 0.899806 0.0246161 0 0 0 0 0 0 0 0 0 0.0894519 0.144181 0.471257 0.922627 1.17321 1.40782 1.81029 2.18603 2.09233 1.86134 1.61823 1.53297 1.49235 1.41496 1.66802 1.93415 1.20998 0.479028 0.068119 0 0 0 0 0 0 0 0 0 0.0597148 0.374898 0.772442 1.12013 1.46261 1.70303 1.84909 1.84786 1.52097 1.42423 1.41821 1.4682 1.48915 1.43049 1.65253 1.58213 0.798391 0.0273235 0.0883621 0.00135955 0 0 0 0 0 0 0 0 0 0 0.320786 0.549345 1.08975 1.54419 1.59518 1.28118 1.10346 0.999328 1.12491 1.3338 1.45095 1.51466 1.74802 1.47698 0.669321 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.124925 0.424403 0.648601 0.612219 0.508614 0.742129 0.99694 1.10414 1.37422 1.51052 1.08119 0.740434 0.0473105 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.437377 0.603559 0.727737 1.07115 1.33205 1.30928 1.79465 1.18787 0.385983 0 0 0.00392759 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0178718 0.482321 0.350581 0.97209 1.44406 1.79807 1.57255 1.89956 1.28128 0.49553 0.193848 0.33784 0.333223 0.200659 0.0406501 0 0 0 0 0.0184298 0.0880531 0.165194 0.373091 0.44222 0 0 0 0.122686 0.343777 1.02566 1.07764 1.68331 1.71428 1.70497 2.08329 2.1133 1.66764 1.38186 1.37985 1.32851 0.972639 0.530189 0.213507 0 0 0 0 0.0239134 0.176105 0.530241 1.01217 1.48323 1.64561 1.5714 1.41589 1.35247 1.30729 1.52386 1.78088 1.52429 1.50873 1.87489 2.50511 2.32471 2.05259 2.0565 2.15215 1.95141 1.43842 0.777978 0.288827 0 0 0 0 0 0.0863111 0.529502 1.1912 1.81676 2.27914 2.26127 1.9024 1.4281 1.46826 1.6766 1.62145 1.5866 1.48809 1.84198 2.36061 2.25801 2.192 2.24109 2.35458 2.2356 1.48995 0.729544 0.00191514 0 0 0 0 0 0 0.599701 1.51605 2.13975 2.38981 2.35258 1.9505 1.80637 1.62002 1.55152 1.27062 1.03997 0.959242 1.09289 1.3368 1.36049 1.40122 1.4257 1.61801 1.69302 0.941082 0.234764 0 0 0 0 0 0 0 0.247457 1.20283 1.78973 1.76751 1.75039 1.5192 1.42108 1.29635 0.796584 0.38032 0.130641 0 0 0 0 0 0 0.573323 0.710258 0.279395 0 0 0 0 0 0 0 0 0 0.724099 1.56274 1.47456 1.45904 1.41919 1.18451 0.771977 0.310994 0 0 0 0 0 0 0 0 0.104041 0.100452 0 0 0 0 0 0 0 0 0 0 0.324859 0.612337 0.926171 0.96975 0.881887 0.711551 0.442028 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00528715 0 0 0 0 0 0 0 0 0 0 0 0 0.0362447 0.0506645 0 0 0 0 0 0 0 0 0 0 0 0 0.0066467 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0530938 0 0 0 0 0.00135955 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0181274 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.00652129 0.00256804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

 

第一层池化输出形状为:[100, 20, 14, 14]

第一张图片一通道输出元素为:name tmp_9, dtype: VarType.FP32 shape: [14, 14] lod: {}

dim: 14, 14

layout: NCHW

dtype: float

data: [0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.071371 0.324093 0.400449 0.351772 0.151425 0 0 0 0 0 0 0.0184468 0.187371 0.691805 1.32078 1.98569 2.20357 2.14499 1.09824 0.123038 0 0 0 0 0.0836431 0.528058 1.39997 1.92885 2.10435 2.45614 2.40841 2.30777 0.926959 0.0806845 0 0 0 0.0894519 0.772442 1.46261 1.84909 2.18603 1.86134 1.53297 1.66802 1.93415 0.479028 0.00135955 0 0 0 0 0.320786 1.08975 1.59518 1.28118 1.12491 1.45095 1.74802 1.47698 0 0 0 0 0 0 0 0 0.0178718 0.603559 1.44406 1.79807 1.89956 0.49553 0.33784 0.200659 0 0 0.176105 1.01217 1.64561 1.5714 1.35247 1.78088 1.71428 2.50511 2.32471 2.15215 1.95141 0.777978 0 0 0.0863111 1.51605 2.38981 2.35258 1.80637 1.6766 1.5866 2.36061 2.25801 2.35458 2.2356 0.729544 0 0 0 1.20283 1.78973 1.75039 1.42108 0.796584 0.130641 0 0 0.573323 0.710258 0 0 0 0 0.324859 0.926171 0.96975 0.711551 0 0 0 0 0 0 0.0066467 0 0 0 0 0 0 0.0530938 0.0181274 0.00135955 0 0 0 0 0 0 0 0 0 0 0 0.00652129 0.00256804 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]

 

第二层卷积输出形状为:[100, 20, 14, 14]

第一张图片一通道输出元素为:name tmp_14, dtype: VarType.FP32 shape: [14, 14] lod: {}

dim: 14, 14

layout: NCHW

dtype: float

data: [1.19209e-07 1.19209e-07 0 0 0 0 0 0 0 0 0 0 0 0 5.96046e-08 0 0 0 0 0 0 0 0 0 0 0 0.185648 0.0237772 0 0 0 0 0 0 0 0 0 0 0.342827 0.637606 0.53447 0.104528 0 0 0 0 0 0 0 0 0.0301961 0.381239 1.17383 1.12478 0.284487 0 0 0 0 0 0 0 0 0.437326 0 0.503725 0.868756 0.675582 0 0 0 0 0 0 0 0 0 0 0.100239 0.690143 0.209016 0 0 0 0 0 0 0 0 0 0 0 0 0.110038 0 0 0 0.223543 0 0 0 0 0 0 0 0 0.614679 0.198674 0 0.619379 0.921808 0.433137 0 0 0 0 0 0 0.24269 0.847489 0 0.0022106 0.555722 1.14864 1.14494 0.18669 0 0 0 0 0 1.08517 1.26684 0.939143 0.250478 0.52881 0.370826 0.664027 0.339639 0.0469889 0 0 0 0.269834 0.609262 0.908573 0.98342 0.183846 0 0.0975537 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.0234631 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.038825 0.00678838 1.86265e-08 0 3.72529e-08 0]

 

第二层池化输出形状为:[100, 20, 7, 7]

第一张图片一通道输出元素为:name tmp_17, dtype: VarType.FP32 shape: [7, 7] lod: {}

dim: 7, 7

layout: NCHW

dtype: float

data: [1.19209e-07 0 0 0 0 0 0.185648 0 0 0 0 0.381239 1.17383 0.53447 0 0 0 0.437326 0.690143 0.868756 0 0 0 0 0 0.614679 0.619379 0.921808 0 0 1.08517 1.26684 0.52881 1.14864 1.14494 0 0.269834 0.908573 0.98342 0.0975537 0 0 0 0 0 0.0234631 0.038825 1.86265e-08 3.72529e-08]

 

全连接层输出形状为:[100, 10]

第一张图片一通道输出元素为:name tmp_22, dtype: VarType.FP32 shape: [1] lod: {}

dim: 1

layout: NCHW

dtype: float

data: [0.0308802]
2.将分类准确率的指标 用PLT库画图表示

3.通过分类准确率,判断以采用不同损失函数训练模型的效果优劣

均从零开始训练,0.01学习率,较少的训练轮数下,adam为优

4.作图比较:随着训练进行,模型在训练集和测试集上的Loss曲线

以adam为损失函数,重复载入上次训练结果,每次5轮,共训练50轮,暂未捕捉到测试lose曲线上升现象。

5.调节正则化权重,观察4的作图曲线的变化,并分析原因

添加l2正则化后,模型表达能力受限,训练损失和测试损失在下降到一定程度后反向回升。在手写数字识别上的识别精度控制在0.95左右

 

0
回复
莲子心
#750 回复于2020-01

作业7-2:

0
回复
t
tichen858
#751 回复于2020-01

作业7-1

乘法数=224*224*9*3*10*64=867 041 280

加法数=224*224*((8+1)*3+3-1)*10*64 = 931 266 560

作业7-2

0
回复
t
tichen858
#752 回复于2020-01

作业7-1

乘法数=224*224*9*3*10*64=867 041 280

加法数=224*224*((8+1)*3+3-1)*10*64 = 931 266 560

作业7-2

0
回复
友友的路
#753 回复于2020-01

最近出差,所以提交作业晚了,现在补上。

作业5-1:从原始数据集中,随机抽取100张图片,测试模型分类准确率

程序参考了《2-2手写入门里的实例程序》和640楼同学的程序

# 设置数据读取器,读取MNIST数据-测试集
testset = paddle.dataset.mnist.test()
# 包装数据读取器,每次读取的数据数量设置为batch_size=1000
test_reader = paddle.batch(testset, batch_size=1000)

#读取dataNum条随机抽取的测试集数据
def FetchRandomData(dataNum):
    # 以迭代的形式读取数据
    for batch_id, data in enumerate(test_reader()):
        #通过np的随机shuffle打乱循序后再进行截取dataNum个数据集:
        data = np.array(data)#转换为numpy的array
        np.random.shuffle(data)#打乱顺序以获得随机抽取效果
        data = data[:dataNum]#打乱后截取的个数dataNum

        # 获得图像数据,并转为float32类型的数组
        img_data = np.array([x[0] for x in data]).astype('float32')
        # 获得图像标签数据,并转为float32类型的数组
        label_data = np.array([x[1] for x in data]).astype('float32')
        # 打印数据形状
        # print("图像数据形状和对应数据为:", img_data.shape, img_data[0])
        # print("图像标签形状和对应数据为:", label_data.shape, label_data[0])
        # print("图像对应标签为:", label_data[0])
        # break
        
        return img_data, label_data

#通过readData()函数返回结果每次都不同,即为随机取值:
# print("\n打印随机取得100个图像,对应标签数字为{}".format(readData(100)[1]))

# 定义预测过程
def forecast(img_data, label_data):
    with fluid.dygraph.guard():
        model = MNIST("mnist")
        #加载模型参数
        model_dict, _ = fluid.load_dygraph("mnist")
        model.load_dict(model_dict)
        model.eval()
        #传入图片信息
        tensor_img = np.array([img_data])
        #开始预测:预测输出取整,即为预测的数字
        result = model(fluid.dygraph.to_variable(tensor_img)).numpy().astype('int32')
        #打印预测结果:
        print("本次预测的数字是:", result[0],' 对应标签数字为:',int(label_data))
        if(result == label_data):
            return 1
        else:
            return 0

#随机取100条测试集数据
img_data, label_data = FetchRandomData(100)
#打印显示获得的100张中的第一张图片信息:
# plt.imshow(img_data[0].reshape(28, 28))

result = []
for id, ld in zip(img_data, label_data):# zip() 打包为新的元组列表
    result.append(forecast(id, ld))
print("线性回归模型测试{}张图片的正确率是:{:%}".format(100, np.sum(result) / 100))

运行结果如下:100张图片的识别正确率是17%。因为是随机选取的100张图片,所以每次识别正确率是变化的

作业5-2:了解下对于计算机视觉,有哪些常见的卷积升级网络

下面内容主要来自百度和其他同学的回答,我也是初次学习,所以收集如下:

1.LeNet-5:最早在编码数字分类有好的效果,一个五层网络结果;

2.AlexNet,2012年ImageNet提出,结构事使用5层卷积+3个fc层,softmax实现1000分类;首次使用数据增广;用ReLU代替Sigmoid增加收敛速度;使用多GPU计算;加入Dropout等;

3.VGGNet,来自论文《Very Deep Convolutional Networks for Large-Scale Visual Recognition》,是一个深层网络结构,现在实际应用中主要在工程实践中用到的,常见的是16层,而且使用了Pre-training的方式,加入BatchNormalization。

4.GoogLeNet:2014提出的新网络结构,Inception结构代替了单纯的卷积+激活的传统操作,引入Inception结构,一个Block通过1x1卷积 池化 3x3 卷积 5x5卷积,最后在通道维上连结,实现较好的准确率

5.ResNet,残差网络结构,还没太了解这个,实现恒等映射,防止过深的网络导致梯度消失,这样的结构延续至今,可以结合目前流行的网络使用。

6.DenseNet,CVPR 2017最佳论文,(Dense Convolutional Network),网络结构很深,通过采用密集连接:缓解梯度消失问题,加强特征传播,鼓励特征复用,极大的减少了参数量。

7.Mixnet, 通过多个卷积核卷积连结,减小参数量的同时提高精度

8.ResNeXt:2017ILSVRC增加了子模块的拓扑结构;cardinality(基数);网络研究中提高增加 cardinality 比增加深度和宽度更有效;可以实现在不增加参数复杂度的前提下提高准确率,减少了超参数的数量;

 

作业5-3:在手写识别任务上,哪些优化算法效果好,多大的学习效率最优秀,通过loss的下降趋势来判断

解答:下面计算均采用步长0.01,Momentum方法中momentum初始值设置为0.9.

从图形来看,Adam方法最好,loss收敛速度快,并且震荡小。

SGD   loss :

 

Momentum loss: momentum=0.9

Adagrad loss 

Adam loss 

0
回复
FrankFly
#754 回复于2020-01

作业7-1:新壮-数据挖掘-BJ

乘法次数= 867041280
加法次数=867041280
对于输出来说,一个像素点需要乘法 3x3x3=27次,加法(3x3-1)x3+(3-1)+1(bias)=27次,输出像素点=10x64x224x224=32112640,输出size=(224+2+-(3-1+1))/1+1=224

作业7-2:

0
回复
呵呵xyz1
#755 回复于2020-01

作业6-1:
1.将普通神经网络模型的每层输出打印,观察内容
class MNIST(fluid.dygraph.Layer):
def __init__(self, name_scope):
super(MNIST, self).__init__(name_scope)
name_scope = self.full_name()
self.conv1 = Conv2D(name_scope, num_filters=20, filter_size=5, stride=1, padding=2)
self.pool1 = Pool2D(name_scope, pool_size=2, pool_stride=2, pool_type='max')
self.conv2 = Conv2D(name_scope, num_filters=20, filter_size=5, stride=1, padding=2)
self.pool2 = Pool2D(name_scope, pool_size=2, pool_stride=2, pool_type='max')
self.fc = FC(name_scope, size=10, act='softmax')

#加入对每一层输入和输出的尺寸和数据内容的打印,根据check参数决策是否打印每层的参数和输出尺寸
def forward(self, inputs, label=None, check_shape=False, check_content=False):
# 给不同层的输出不同命名,方便调试
outputs1 = self.conv1(inputs)
outputs2 = self.pool1(outputs1)
outputs3 = self.conv2(outputs2)
outputs4 = self.pool2(outputs3)
outputs5 = self.fc(outputs4)
return outputs5
>>>
########## print network layer's superparams ##############
conv1-- kernel_size:[20, 1, 5, 5], padding:[2, 2], stride:[1, 1]
conv2-- kernel_size:[20, 20, 5, 5], padding:[2, 2], stride:[1, 1]
pool1-- pool_type:max, pool_size:[2, 2], pool_stride:[2, 2]
pool2-- pool_type:max, poo2_size:[2, 2], pool_stride:[2, 2]
fc-- weight_size:[980, 10], bias_size_[10], activation:softmax

########## print shape of features of every layer ###############
inputs_shape: [100, 1, 28, 28]
outputs1_shape: [100, 20, 28, 28]
outputs2_shape: [100, 20, 14, 14]
outputs3_shape: [100, 20, 14, 14]
outputs4_shape: [100, 20, 7, 7]
outputs5_shape: [100, 10]

########## print network layer's superparams ##############
conv1-- kernel_size:[20, 1, 5, 5], padding:[2, 2], stride:[1, 1]
conv2-- kernel_size:[20, 20, 5, 5], padding:[2, 2], stride:[1, 1]
pool1-- pool_type:max, pool_size:[2, 2], pool_stride:[2, 2]
pool2-- pool_type:max, poo2_size:[2, 2], pool_stride:[2, 2]
fc-- weight_size:[980, 10], bias_size_[10], activation:softmax

########## print shape of features of every layer ###############
inputs_shape: [100, 1, 28, 28]
outputs1_shape: [100, 20, 28, 28]
outputs2_shape: [100, 20, 14, 14]
outputs3_shape: [100, 20, 14, 14]
outputs4_shape: [100, 20, 7, 7]
outputs5_shape: [100, 10]

########## print convolution layer's kernel ###############
conv1 params -- kernel weights: name tmp_7228, dtype: VarType.FP32 shape: [5, 5] lod: {}
dim: 5, 5
layout: NCHW
dtype: float
data: [0.285795 -0.497442 -0.329033 -0.196272 0.0283462 -0.265686 -0.0366497 -0.235756 -0.579852 0.352782 0.129043 0.0992124 0.428927 -0.0236315 -0.0549529 -0.116191 -0.139062 -0.142551 0.199173 -0.119843 -0.441896 -0.76332 -0.447826 -0.117968 -0.41601]

conv2 params -- kernel weights: name tmp_7230, dtype: VarType.FP32 shape: [5, 5] lod: {}
dim: 5, 5
layout: NCHW
dtype: float
data: [0.0184141 -0.00476859 -0.00105555 -0.0506164 0.0424409 0.00563936 0.125538 0.0111884 0.00202755 -0.0478399 -0.00854358 -0.00799576 0.0125132 0.0170239 -0.0108752 0.0953443 -0.105848 0.130076 -0.0698557 -0.039382 -0.0417719 0.0329137 0.00646807 -0.0582326 0.028017]

2.将分类准确率的指标 用PLT库画图表示


3.通过分类准确率,判断以采用不同损失函数训练模型的效果优劣
交叉熵损失函数最好
a)cross_entropy

b)sigmoid_cross_entropy_with_logits

c)square_error_cost


4.作图比较:随着训练进行,模型在训练集和测试集上的Loss曲线
5.调节正则化权重,观察4的作图曲线的变化,并分析原因

正则化权重越大 对参数训练的抑制作用越大

regularization=fluid.regularizer.L2Decay(regularization_coeff=0.8)

regularization=fluid.regularizer.L2Decay(regularization_coeff=0.5)

regularization=fluid.regularizer.L2Decay(regularization_coeff=0.1)

regularization=fluid.regularizer.L2Decay(regularization_coeff=0.01)


data_writerloss = []
data_writeracc = []
data_writer_x = []
evaldata_writerloss = []
evaldata_writeracc = []
evaldata_writer_x = []
with fluid.dygraph.guard(place):
# params_dict, opt_dict = fluid.load_dygraph(params_path)
model = MNIST("mnist")
# model.load_dict(params_dict)
model.train()
train_loader = paddle.batch(paddle.dataset.mnist.train(), batch_size=100)
eval_loader = paddle.batch(paddle.dataset.mnist.test(), batch_size=10000)#
boundaries =[20*600,40*600,60*600,70*600]
values = [0.003,0.001,0.0005,0.00025,0.0001]
# optimizer = fluid.optimizer.SGDOptimizer(learning_rate=fluid.layers.piecewise_decay(boundaries, values),
# regularization=fluid.regularizer.L2Decay(regularization_coeff=0.001))
#RMSPropOptimizer
optimizer = fluid.optimizer.AdamOptimizer(learning_rate=fluid.layers.piecewise_decay(boundaries, values),
regularization=fluid.regularizer.L2Decay(regularization_coeff=1.0))
# optimizer = fluid.optimizer.AdamOptimizer(learning_rate=0.003,
# regularization=fluid.regularizer.L2Decay(regularization_coeff=0.0015))
#optimizer = fluid.optimizer.MomentumOptimizer(learning_rate=fluid.layers.piecewise_decay(boundaries, values),
# momentum=0.95,
# regularization=fluid.regularizer.L2Decay(regularization_coeff=0.001))
# optimizer.set_dict(opt_dict)
EPOCH_NUM = 5
scalar_x = 0
markers = ['+', 'x', 'o', 's']
print('train')
for epoch_id in range(0,EPOCH_NUM):

for batch_id, data in enumerate(train_loader()):
model.train()
image_data = np.array([np.reshape(x[0],[1,28,28]).astype('float32') for x in data])
label_data = np.array([np.reshape(x[1], [1]).astype('int64') for x in data])#.reshape(-1, 1)
# 将数据转为飞桨动态图格式
image = fluid.dygraph.to_variable(image_data)
label = fluid.dygraph.to_variable(label_data)
#前向计算的过程
predict,avg_acc = model(image,label)
loss = fluid.layers.cross_entropy(predict, label)
avg_loss = fluid.layers.mean(loss)
# break

#后向传播,更新参数的过程
avg_loss.backward()
optimizer.minimize(avg_loss)
model.clear_gradients()

#每训练了1000批次的数据,打印下当前Loss的情况
if batch_id !=0 and batch_id % 50 == 0:
# clear()
# print("epoch: {}, batch: {}, loss is: {}".format(epoch_id, batch_id, avg_loss.numpy()))
print("epoch: {}, batch: {}, loss is: {}, acc is {}".format(epoch_id, batch_id, avg_loss.numpy(), avg_acc.numpy()))
# print("epoch: {}, batch: {}, loss is: {}, acc is {}".format(epoch_id, batch_id, avg_loss.numpy(),acc))

data_writeracc.append(avg_acc.numpy()[0])
# data_writeracc.append(acc)
data_writerloss.append(avg_loss.numpy()[0])
data_writer_x.append(scalar_x)
scalar_x = scalar_x + 50


model.eval()
for batch_id, data in enumerate(eval_loader()):
image_data = np.array([np.reshape(x[0],[1,28,28]).astype('float32') for x in data])
label_data = np.array([np.reshape(x[1], [1]).astype('int64') for x in data])#.reshape(-1, 1)
# 将数据转为飞桨动态图格式
image = fluid.dygraph.to_variable(image_data)
label = fluid.dygraph.to_variable(label_data)
#前向计算的过程
predict,avg_acc = model(image,label)
loss = fluid.layers.cross_entropy(predict, label)
avg_loss = fluid.layers.mean(loss)

# clear()
print('--------------eval-------------')
print("epoch: {}, batch: {}, loss is: {}, acc is {}".format(epoch_id, batch_id, avg_loss.numpy(), avg_acc.numpy()))
print('--------------eval-------------')
print('--',avg_loss.numpy()[0])
evaldata_writeracc.append(avg_acc.numpy()[0])
# data_writeracc.append(acc)
evaldata_writerloss.append(avg_loss.numpy()[0])

#查看测试集准确率及loss
clear()
plt.figure()
plt.title("train",fontsize=24)
plt.xlabel('x',fontsize=14)
plt.ylabel("acc/loss",fontsize=14)
plt.plot(data_writer_x,data_writeracc,color='red',label='train_acc',marker='+')
plt.plot(data_writer_x,data_writerloss,color='green',label='train_loss',marker='*')
plt.plot(data_writer_x,evaldata_writeracc,color='blue',label='eval_acc',marker='+')
plt.plot(data_writer_x,evaldata_writerloss,color='purple',label='eval_loss',marker='*')

plt.legend(['tain_acc','train_loss','eval_acc','eval_loss'],loc=1)
plt.grid()# 生成网格
plt.show()

 

0
回复
边陲
#756 回复于2020-01

作业7-1

乘法867041280,加法867041280

作业7-2:

问题:第二个全连接称不理解

0
回复
DevF
#757 回复于2020-01

作业7-1  计算卷积中一共有多少次乘法和加法操作

 

乘法 9*224*224*3 * 64*10=867,041,280   加法 (9*224*224*3+2)*64*10=867,042,560

0
回复
DevF
#758 回复于2020-01

7-2:

0
回复
呵呵xyz1
#759 回复于2020-01

作业7-1:

乘法次数867041280
加法次数867041280

作业7-2:

 

 

0
回复
小公主mini516
#760 回复于2020-01

作业7-1

乘法 867041280,加法(有bias)867041280,加法(无bias)834928640

输入数据形状[N,Cin,Hin,Win]= [10, 3, 224, 224], 卷积核kh = kw = 3,输出通道数Cout为64,步幅stride=1,填充ph = pw =1

1卷积一个结果是:乘法次数kh * kw=9,加法次数kh * kw – 1=8

2、多输入通道:乘法次数kh * kw* Cin =27,有偏置加法次数(kh * kw - 1) * Cin + (Cin - 1) + 1=27,无偏置加法次数(kh * kw - 1) * Cin + (Cin - 1) =26

3输出特征图尺寸:[(Hin + 2 * ph - kh) / stride+ 1] * [(Win + 2 * pw - kw) / stride+ 1]=50176

4、不同输出通道结果堆叠和输入批次:Cout*N=640

综上

乘法数量为:kh * kw * Cin * [(Hin + 2 * ph - kh) / stride+ 1] * [(Win + 2 * pw - kw) / stride+ 1] * Cout * N=867041280

加法数量为(有bias):[(kh * kw - 1) * Cin + (Cin - 1) + 1] * [(Hin + 2 * ph - kh) / stride+ 1] * [(Win + 2 * pw - kw) / stride+ 1]* Cout * N=867041280

加法数量为(无bias):[(kh * kw - 1) * Cin + (Cin - 1) ] *[(Hin + 2 * ph - kh) / stride+ 1] * [(Win + 2 * pw - kw) / stride+ 1]* Cout * N =834928640

0
回复
炼丹的猪猪侠
#761 回复于2020-01

作业7.1:

乘法:224*224*9*3*64*10= 867041280

加法:(224*224*(8+1)*3+224*224*2)*64*10=931266560

作业7.2:

 

0
回复
在@后输入用户全名并按空格结束,可艾特全站任一用户