百度深度学习集训营已经正式开营,每个阶段的作业都将有各自的奖励,欢迎大家学习~
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《百度架构师手把手教深度学习》课程上
作业7-1 计算卷积中一共有多少次乘法和加法操作
考虑偏置项的情况下,卷积核的单次运算所用乘法和加法数相同,
则:
加法或乘法数 = 输出通道数 x 输入通道数 x 输出特征图cell数 x 卷积核单次运算所需的加法或乘法数
64*10*(224+2-3+1)*(224+2-3+1)*(3*3*3) = 867,041,280
所以,所需的加法或乘法数为867041280
作业7-2:
作业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时,没有过拟合的震荡。
作业6-1:
3 fluid.layers.cross_entropy
softmax_with_cross_entropy
最近出差,所以提交作业晚了,现在补上,希望时间还赶得及。
作业4-2:
通过Python、深度学习框架,不同方法写房价预测,Python编写的模型 和 基于飞桨编写的模型在哪些方面存在异同?例如程序结构,编写难易度,模型的预测效果,训练的耗时等等?
解答:两者对比上:
1.程序结构是相同的,都需要经过数据处理,模型配置,训练配置,模型训练和保存
不同点:
1. 飞桨编写难度低,飞桨内部封装好了很多深度学习常用函数,开发人员不再使用Python重复编写,效率大大提高
2. 相同算法,模型预测效果相差不大,但飞桨经过优化,训练耗时肯定比一般用户编写的Python程序少。
3.使用飞桨,用户的关注重点可以放在具体业务场景中,不必在基础数学函数的编写和一些常用优化方法上消耗开发精力。
作业6-1
4
5
正则化权重分别0.1 0.01 0.001 时,图形与图4基本一致,均是在0-500中间出现拐点,即模型出现过拟合的情况
作业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
作业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左右
作业7-2:
作业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
作业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
最近出差,所以提交作业晚了,现在补上。
作业5-1:从原始数据集中,随机抽取100张图片,测试模型分类准确率
程序参考了《2-2手写入门里的实例程序》和640楼同学的程序
运行结果如下: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
作业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:
作业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()
作业7-1
乘法867041280,加法867041280
作业7-2:
问题:第二个全连接称不理解
作业7-1 计算卷积中一共有多少次乘法和加法操作
乘法 9*224*224*3 * 64*10=867,041,280 加法 (9*224*224*3+2)*64*10=867,042,560
7-2:
作业7-1:
乘法次数867041280
加法次数867041280
作业7-2:
作业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
作业7.1:
乘法:224*224*9*3*64*10= 867041280
加法:(224*224*(8+1)*3+224*224*2)*64*10=931266560
作业7.2: