python训练过程是什么_零基础⼊门深度学习(⼀):⽤
numpy实现神经⽹络训练
本课程是百度官⽅开设的零基础⼊门深度学习课程,主要⾯向没有深度学习技术基础或者基础薄弱的同学,帮助⼤家实现从0到1的跨越。从本课程中,你将学习到:深度学习基础知识
numpy实现神经⽹络构建和梯度下降算法
计算机视觉领域主要⽅向的原理、实践
⾃然语⾔处理领域主要⽅向的原理、实践
个性化推荐算法的原理、实践
本周为开讲第⼀周,百度深度学习技术平台部主任架构师毕然⽼师,利⽤两次课的时间,讲解了三个知识点:⼈⼯智能、机器学习、深度学习三者的关系,并简要介绍了深度学习的发展历史以及未来趋势。
介绍构建深度模型的五个步骤,并⼿把⼿教⼤家使⽤numpy实现神经⽹络。
原理介绍和代码实践并⾏,详细介绍了使⽤numpy实现梯度下降算法。
本⽂总结了毕然⽼师的讲课要点,不免疏漏⼀些⽣动的讲课案例,感兴趣的同学可从⽂末链接中直接观看课程。
深度学习介绍
对于深度学习初学者来说,容易遇到三个⼊门级问题:⼈⼯智能、机器学习、深度学习三者之间关系是什么?
⼀般的机器学习⽅法是什么?
为什么那么多⼈看好深度学习,其未来的发展趋势是什么?
本次课程在第⼀讲中则优先解决这些问题。⾸先对第⼀个问题,以⼈⼯智能、机器学习、深度学习三者的关系开始。三者覆盖的技术范畴是逐层递减的,⼈⼯智能是最宽泛的概念,机器学习则是实现⼈⼯智能的⼀种⽅式,也是⽬前较有效的⽅式。深度学习是机器学习算法中最热的⼀个分⽀,在近些年取得了显著的进展,并代替了多数传统机器学习算法。所以,三者的关系可⽤下图表⽰,⼈⼯智能 > 机器学习 > 深度
学习。
最后以讲解历史课的形式,对深度学习的历史做了简单的介绍,
在深度学习框架出现之前,机器学习⼯程师处于⼿⼯业作坊⽣产的时代。为了完成建模,⼯程师需要储备⼤量数学知识,并为特征⼯程⼯作积累⼤量⾏业知识。每个模型是极其个性化的,建模者如同⼿⼯业者⼀样,将⾃⼰的积累形成模型的“个性化签名”。⽽今,“深度学习⼯程师”进⼊了⼯业化⼤⽣产时代。只要掌握深度学习必要但少量的理论知识,掌握Python编程即可以在深度学习框架实现极其有效的模型,甚⾄与该领域最领先的实现模型不相上下。建模这个被“⽼科学家”们长期把持的建模领域⾯临着颠覆,也是新⼊⾏者的机遇。
⽤Python搭建神经⽹络
实践出真知,理论知识说的天花乱坠也不如多写⼏⾏代码。了解到⼤多数⽤户即使使⽤⼀些深度学习框架搭建出了⼀个神经⽹络,但是对神经⽹络和梯度下降算法理解并不深刻。针对学员的诉求,本次课程增加了使⽤numpy构建神经⽹络、实现梯度下降的实践课程。本次实验实现波⼠顿房价预测的回归模型。应⽤于不同场景的深度学习模型具备⼀定的通⽤性,均分为五个步骤来完成模型的构建和训练,使⽤numpy实现神经⽹络也不外乎如此,步骤如下:数据处理:从本地⽂件或⽹络地址读取数据,并做预处理操作,如校验数据的正确性等。
模型设计:完成⽹络结构的设计(模型要素1),相当于模型的假设空间,即模型能够表达的关系集合。
训练配置:设定模型采⽤的寻解算法(模型要素2),即优化器,并指定计算资源。
jquery分页插件最好用的训练过程:循环调⽤训练过程,每轮均包括前向计算 、损失函数(优化⽬标,模型要素3)和后向传播这三个步骤。
保存模型:将训练好的模型保存,以备预测时调⽤。
下⾯使⽤Python编写预测波⼠顿房价的模型,⼀样遵循这样的五个步骤。正是由于这个建模和训练的过程存在通⽤性,即不同的模型仅仅在模型三要素上不同,⽽五个步骤中的其它部分保持⼀致,深度学习框架才有⽤武之地。数据处理与读取⾸先进⾏数据处理,完成数据集划分、数据归⼀化,以及构建数据读取⽣成器。代码如下:
def load_data():
# 从⽂件导⼊数据
datafile = './work/housing.data'
data = np.fromfile(datafile, sep=' ')
# 每条数据包括14项,其中前⾯13项是影响因素,第14项是相应的房屋价格中位数
slice中文意思
feature_names = [ 'CRIM', 'ZN', 'INDUS', 'CHAS', 'NOX', 'RM', 'AGE', \
'DIS', 'RAD', 'TAX', 'PTRATIO', 'B', 'LSTAT', 'MEDV' ]
feature_num = len(feature_names)
# 将原始数据进⾏Reshape,变成[N, 14]这样的形状
data = shape([data.shape[0] // feature_num, feature_num])
# 将原数据集拆分成训练集和测试集
# 这⾥使⽤80%的数据做训练,20%的数据做测试
# 测试集和训练集必须是没有交集的
ratio = 0.8
offset = int(data.shape[0] * ratio)
training_data = data[:offset]
整人代码手机上能运行的
# 计算train数据集的最⼤值,最⼩值,平均值
maximums, minimums, avgs = training_data.max(axis=0), training_data.min(axis=0), \
training_data.sum(axis=0) / training_data.shape[0]
# 对数据进⾏归⼀化处理
for i in range(feature_num):
#print(maximums[i], minimums[i], avgs[i])
data[:, i] = (data[:, i] - avgs[i]) / (maximums[i] - minimums[i])
# 训练集和测试集的划分⽐例
training_data = data[:offset]
test_data = data[offset:]
return training_data, test_data
构建神经⽹络
将波⼠顿房价预测输出的过程以“类和对象”的⽅式来描述,实现的⽅案如下所⽰。类成员变量有参数 w 和 b,并写了⼀个forward函数(代表“前向计算”)完成上述从特征和参数到输出预测值的计算过程。
class Network(object):
def __init__(self, num_of_weights):
# 随机产⽣w的初始值
# 为了保持程序每次运⾏结果的⼀致性,
cdata的意思
# 此处设置固定的随机数种⼦
np.random.seed(0)
self.w = np.random.randn(num_of_weights, 1)
img文件在手机上怎么用self.b = 0.
def forward(self, x):
z = np.dot(x, self.w) + self.b
numpy实现梯度下降算法
当使⽤深度学习框架实现的时候,这部分是不需要我们⼿动实现的。但是不代表我们不需要去了解它,本次课程以瞎⼦下坡的⽅式为例,讲解了梯度下降的基本原理和使⽤numpy实现梯度下降。
前⽂已提到,构建机器学习模型的⾸要是从⼀个假设空间,构建算法,去达到这个假设空间的最优值。以下图为例,
从随机初始化的点达到坡底(最优值)的过程,特别类似于⼀位想从⼭峰⾛到坡⾕的盲⼈,他看不见坡⾕在哪(⽆法逆向求解出Loss导数为0时的参数值),但可以伸脚探索⾝边的坡度(当前点的导数值,也称为梯度)。那么,求解Loss函数最⼩值可以“从当前的参数取值,
⼀步步的按照下坡的⽅向下降,直到⾛到最低点”实现。
def gradient(self, x, y):
z = self.forward(x)
gradient_w = (z-y)*x
gradient_w = np.mean(gradient_w, axis=0)
gradient_w = gradient_w[:, np.newaxis]
gradient_b = (z - y)
gradient_b = np.mean(gradient_b)
return gradient_w, gradient_b
def update(self, graident_w5, gradient_w9, eta=0.01):
net.w[5] = net.w[5] - eta * gradient_w5
net.w[9] = net.w[9] - eta * gradient_w9
def train(self, x, y, iterations=100, eta=0.01):
points = []
losses = []
python基础知识测试题for i in range(iterations):
points.append([net.w[5][0], net.w[9][0]])
z = self.forward(x)
L = self.loss(z, y)
gradient_w, gradient_b = adient(x, y)
gradient_w5 = gradient_w[5][0]
gradient_w9 = gradient_w[9][0]
self.update(gradient_w5, gradient_w9, eta)
losses.append(L)
if i % 50 == 0:
print('iter {}, point {}, loss {}'.format(i, [net.w[5][0], net.w[9][0]], L))
return points, losses
运⾏代码后,从下⾯这个图⾥可以清晰的看到损失函数的下降过程。
通过两次课程,以机器学习深度学习概述开篇,讲解了深度学习的基础知识,通过使⽤numpy实现房价预测模型,详细讲解了构建深度学习模型的五个步骤,以及梯度下降的基本原理、如何使⽤numpy实现梯度下降等内容,同学们也反馈收获颇多。
下周将继续讲解后续课程,感兴趣同学可以参照⽂末课程链接进⾏报名,课程免费,更有MacBook作为课程结业奖品,欢迎参加。
【如何学习】

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。