百度深度学习集训营已经正式开营,每个阶段的作业都将有各自的奖励,欢迎大家学习~
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《百度架构师手把手教深度学习》课程上
作业2-1
①类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?假设和参数是什么?优化目标是什么?
目前工作是自动驾驶环境感知工程师。
之前做的项目有交通标志识别,激光雷达目标检测。这些都是用到深度学习方法来做的。
交通标识识别是属于图像分类问题,损失函数一般用的交叉熵函数。参数有很多,交通标志大小、形状、颜色分布等等,其实就是和图片像素有关。
激光雷达目标检测可以看作图像分类的升级应用,不仅要判断出物体的类别,还要再给出物体的实际位置。一般会通过目标的大小,对激光的反射率等作出检测。
②为什么说AI工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
首先,人类社会最终都要走向人工智能。
目前人工智能最火的应用应该就是无人驾驶了 ,如果无人驾驶实现了会减少交通事故死亡率,缓解城市交通拥堵等问题。此外,汽车也将从传统的交通工具转变成娱乐办公空间。这无疑就需要大量的工程师,仅环境感知部分就有许多问题需要解决。根据经济学需求供给关系,当供小于求时,属于卖方市场,此时AI工程师处于有利地位。
除了自动驾驶需要AI工程师,其它行业也都需要AI工程师。未来20年,机器学习,深度学习就会像今天的Word,PPT,Excel一样,成为每个人必备的计算机知识。
(1)类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?假设和参数是什么?优化目标是什么?
油橄榄成熟度预测
假设:线性关系,与多个因素有关
参数:温度,光照,虫害,病害,土壤肥力,水分含量
优化目标:保证油橄榄成熟时在可接受的榨油范围内,并且误差不会太大
(2)为什么说AI工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
生育率的下降和人民生活品质日益提升的需求需要人们找到更好的劳动力替代方案,而过去最好的劳动力形式就是人力做工,如果机器能够拥有或者逼近类人智能的话,那么在未来人们大可以将繁重的生产工作交给机器,安心去进行创作工作,也不必担心生育率下降带来的生产力降低,更不用担心人老无所照顾(AI可以照顾老人),让AI取代大部分工作,人类会进一步进化,所以AI工程师会有很大需求。
生育率低迷带来劳动力成本上升,进而导致经济增长放缓,市场需要机器人来替代人力来进行生产工作,而各行各业普遍均出现不同层次的人力缺口。AI工程师能够创作出算法来满足生产需要,同时智能机器人的生产也需要AI工程师的算法设计,所以,现在总体上市场对AI工程师的需求大于供应,现有市场急需要大量AI工程师入驻。
①类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?假设和参数是什么?优化目标是什么?
工业生产中零件的缺陷检测,给一批缺陷不一的零件,并做记录,哪些是裂缝,哪些是磨损等等,进过训练,得出模型,然后自动识别生产线上的零件是否合格及缺陷种类。
②为什么说AI工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
AI工程师在各行各业都有很大的需求,各个行业都需要AI为其赋能,实现转型和营收,即供小于需,所以他有着广阔的发展前景。
作业2-1:
作业2-1:
(1)基础题 苹果和橘子的梯度传播
①类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?假设和参数是什么?优化目标是什么?
答:
简历筛选
假设:简历通过率与个人学历,在校GPA,实习数,项目数,比赛数等等有关
参数:个人学历,在校GPA,实习数,项目数,比赛数等
②为什么说AI工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
AI是未来的主题。因此,市场大量能引领公司占领先机的高端人才,同时也缺乏大量的AI应用工程师,可知,AI是市场上各个公司的兵家必争之地。
1.
回答问题一从上到下,第一列 110,2.2,3.3,165 第二列1.1,1.1,650,第三列1.1,第四列1
作业2-1:
(1)基础题 苹果和橘子的梯度传播
作业2-1
12.12作业(1)
(2):
def loss(self, X, y=None, reg=0.0):
"""
Compute the loss and gradients for a two layer fully connected neural
network.
Inputs:
- X: Input data of shape (N, D). Each X[i] is a training sample.
- y: Vector of training labels. y[i] is the label for X[i], and each y[i] is
an integer in the range 0 <= y[i] < C. This parameter is optional; if it
is not passed then we only return scores, and if it is passed then we
instead return the loss and gradients.
- reg: Regularization strength.
Returns:
If y is None, return a matrix scores of shape (N, C) where scores[i, c] is
the score for class c on input X[i].
If y is not None, instead return a tuple of:
- loss: Loss (data loss and regularization loss) for this batch of training
samples.
- grads: Dictionary mapping parameter names to gradients of those parameters
with respect to the loss function; has the same keys as self.params.
"""
# Unpack variables from the params dictionary
W1, b1 = self.params['W1'], self.params['b1']
W2, b2 = self.params['W2'], self.params['b2']
N, D = X.shape
# Compute the forward pass
scores = None
z1 = np.dot(X,W1)+b1
a1 = np.maximum(0,z1)
scores = np.dot(a1,W2)+b2
# If the targets are not given then jump out, we're done
if y is None:
return scores
# Compute the loss
loss = None
scores -=np.max(scores,axis=1).reshape(N,1)
correct_scores = np.exp(scores[np.arange(N),y])
sum_line = np.sum(np.exp(scores),axis=1)
loss = np.sum(-np.log(correct_scores/sum_line))
loss /= N
loss += reg*(np.sum(W1**2)+np.sum(W2**2))
# Backward pass: compute gradients
grads = {}
dS2 = np.exp(scores)/sum_line.reshape(N,1)
dS2[np.arange(N),y] -=1
grads['W2'] = np.dot(a1.T,dS2)/N + 2 * reg * W2
grads['b2'] = np.sum(dS2, axis=0)/N
dz1 = dS2.dot(W2.T)*(z1>0)
grads['W1'] = np.dot(X.T,dz1)/N + 2 * reg * W1
grads['b1'] = np.sum(dz1, axis=0) / N
return loss, grads
作业1-2
①类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?假设和参数是什么?优化目标是什么?
游泳池排水时间t和排水量v的关系。假设t=wv,参数v,优化目标和案例一样。
②为什么说AI工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
ai工程师可以让机器有学习能力,就最简单来说,能代替一些人类的工作,比如自动驾驶,对不敢开车,没学车的人来说,或者不想开车的人来说,这是福音,可以激发对汽车的需求,这样汽车行业又可以增加一大波消费者。
12月12日作业
作业2-1:
基础题:
作业2-1基础题
不好意思哈,又提交一次,因为之前都没写作业,格式需要作业+答案~这样子~
1)类比牛顿第二定律的案例,在你的工作和生活中还有哪些问题可以用监督学习的框架来解决?假设和参数是什么?优化目标是什么?
未知缺陷产品预测
假设产品的失效与工艺参数,产品性能,未知缺陷有强相关,输入(工艺参数,产品特性),隐藏层(未知缺陷与关联),输出(二分类OK or NG,优化目标是提高预测的高精确率与召回率,
2)为什么说AI工程师有发展前景?怎样从经济学(市场供需)的角度做出解读?
AI 的优势是提升效率,把复杂繁琐的工作交给机器,在将工作做得更好更快更稳定的同时,极大降低了人力成本。而提高生产效率正是是企业增加市场占有率、提升竞争力的关键。
作业2-2:这是一个双层的神经网络设计,源于CSDN,把这个代码和上课讲的结合一下就可以实现双层网络的房价预测了,主要自己广播机制不太会,要改代码需要改好久,留给有缘人改进
import numpy as np
import math
from planar_utils import plot_decision_boundary, sigmoid, load_planar_dataset, load_extra_datasets
def train_model(learning_rate=0.1):
train_data_x, train_data_y = load_planar_dataset() # 获取数据集
row_count = 13 # 表示输入样例的特征数
examples_count = 404 # 表示样例的数量
hidden_count = 13 # 表示隐藏层单元数量为13
weight1 = np.random.randn(row_count, hidden_count) * 0.01
# 初始化隐藏层权值向量,这里不能全部初始化为0,
# 都为0的效果和单层网络是一样的,而且这里的0.01是超参数
b1 = np.zeros((hidden_count, 1)) # 初始化阈值,这里可以初始化为0
weight2 = np.zeros((hidden_count, 1)) # 初始化第二层的权值
b2 = 0
# 迭代
for i in range(10000):
z1 = np.dot(weight1.T, train_data_x) + b1 # 计算z1
y1_hat = 1.0 / (1 + math.e**(-z1)) # 计算y1_hat
z2 = np.dot(weight2.T, y1_hat) + b2 # 计算z2
y2_hat = 1.0 / (1 + math.e**(-z2)) # 计算y2_hat
loss = - np.sum(train_data_y*np.log(y2_hat) +
(1-train_data_y)*np.log(1-y2_hat)) / examples_count # 计算loss
if loss == 0:
break
print '%d:%f' %(i, loss)
dz2 = y2_hat - train_data_y # 计算dL/dz2
dw2 = np.dot(y1_hat, dz2.T) # 计算dL/dw2
db2 = np.sum(dz2)
dw2 = dw2 * 1.0 / examples_count
db2 = db2 * 1.0 / examples_count
dz1 = np.dot(weight2, dz2) * (y1_hat * (1 - y1_hat)) # 计算dL/dz1
dw1 = np.dot(train_data_x, dz1.T) # 计算dL/dw1
db1 = np.sum(dz1, axis=1, keepdims=True)
dw1 = dw1 * 1.0 / examples_count
db1 = db1 * 1.0 / examples_count
weight2 = weight2 - learning_rate * dw2 # 更新w2
b2 = b2 - learning_rate * db2 # 更新b2
weight1 = weight1 - learning_rate * dw1 # 更新w1
b1 = b1 - learning_rate * db1 # 更新b1
return weight1, b1, weight2, b2
def predict_data(weight1, b1, weight2, b2):
test_data_x, test_data_y = load_planar_dataset() # 获取数据集
examples_count = 102 # 表示样例的数量
z1 = np.dot(weight1.T, test_data_x) + b1
y1_hat = 1.0 / (1 + math.e**(-z1))
z2 = np.dot(weight2.T, y1_hat) + b2 # 计算z2
y2_hat = 1.0 / (1 + math.e**(-z2)) # 计算y2_hat
prediction = np.round(y2_hat) # 计算预测值
print 'correct rate:', np.sum(prediction == test_data_y)* 1.0 / examples_count
return prediction
if __name__ == '__main__':
train_data_x, train_data_y = load_planar_dataset() # 获取数据集
weight1, b1, weight2, b2 = train_model(learning_rate = 1.2) # 训练参数
prediction = predict_data(weight1, b1, weight2, b2) # 根据训练的参数进行预测