美文网首页
深度学习讲稿(29)

深度学习讲稿(29)

作者: 山岳之心 | 来源:发表于2021-03-16 20:12 被阅读0次

5.6.2 批量梯度下降法的代码实现

在开始代码之前,我们首先介绍一个numpy的小技巧:矩阵的展平。这里使用到的是numpy中的ravel函数,ravel的中文翻译是拆开,解开的意思。它就是将矩阵拆开成一个列向量。比如我们执行如下的代码:

import numpy as np
a = np.arange(81)
a = a.reshape(9,9)
print(a)
a = a.ravel()
print(a.shape)

我们可以清楚地看到一个9 \times 9的矩阵被拆开成了一个列向量,形状为 (81,) 。

为什么要这么做?

因为计算机的内存是有序排列的,如果存储矩阵,我们知道可以用两个指标来获得矩阵中的一个值。这就意味着在数据结构上有两个互相关联的索引。这种开销虽然看上去很小,但对于很大的数据来说,开销变得极其巨大。但是如果展平了矩阵,使得它仅仅使用一个索引来存储,这就在计算中节省了很多的内存开销。所以,我们为了计算的效率,一般会将矩阵展平来操作。值得注意的是,另一个强大的计算机语言Matlab,它的强大的矩阵计算甚至可以达到C语言的速度。其本质的原因就在于它的存储本身就是将矩阵展平的。而且它虽然表面上是用行列指标来确定矩阵中的某个值,但实际上却是用乘法得到单指标来确定的。所以,这种存储方式决定了计算速度的提高。

所以我们也来对梯度下降法的数据处理部分进行改进。我们之前的数据处理是这段代码:

import numpy as np
cost_of_material = np.array([38.3, 35, 31.2, 43.2, 44.2, 41.2])
cost_of_sales = np.array([12.3, 11.2, 10.1, 9.2, 9.1, 9.6])
cost_of_human = np.array([22,21.3,23.7,23.2,20.5,24.2])
cost_of_product = np.array([7.2, 7.8, 8.3, 8.6, 8.8, 9.3])
sell_price = np.array([100.1, 102, 99.2, 101.2, 103.8, 100.5])

# 数据正规化,由于都是钱计价的,所以可以用同一个单位来正规化,比如这里使用100, 也可以不正规化,这里使用是为了提示你必须先考虑特征的正规化。
cost_of_material /= 100
cost_of_sales /= 100
cost_of_human /= 100
cost_of_product /= 100
sell_price /= 100
# 预设权重
weights = np.array([0.6,0.2,0.8,0.9])
# 学习速率
learning_rate = np.array([0.5,0.5,0.5,0.5])

# 转换成矩阵形式
raw_data = np.vstack((cost_of_material,cost_of_sales,cost_of_human,cost_of_product))
raw_data = raw_data.T
print(raw_data)

可以看到,raw_data是一个6 \times 4 的矩阵。

相关文章

  • 深度学习讲稿(29)

    5.6.2 批量梯度下降法的代码实现 在开始代码之前,我们首先介绍一个numpy的小技巧:矩阵的展平。这里使用到的...

  • 深度学习讲稿(2)

    1.4 深度学习的当前应用 目前,深度学习已经和商业结合得非常多。这个算法本身已经深刻地改变了人类社会,而且在未来...

  • 深度学习讲稿(1)

    深度学习 I. 从AlphaGo谈起 大家听说过2015年10月, 英国DeepMind设计的人工智能AlphaG...

  • 深度学习讲稿(4)

    第2章: 基本概念 本章主要内容: 什么是深度学习、机器学习和人工智能? 什么是参数模型和非参数模型? 什么是监督...

  • 深度学习讲稿(5)

    2.3 监督机器学习 监督学习对数据集进行转换 监督学习是一种将一个数据集转换成另一个数据集的方法。例如,如果你有...

  • 深度学习讲稿(7)

    2.6 监督参数学习 简化描述:使用旋钮进行试错学习 监督参数学习机是一台具有固定数量的旋钮(参数)的机器,通过转...

  • 深度学习讲稿(6)

    2.5 参数学习和非参数学习 简化表述:试错学习 VS. 计数和概率。前面谈的内容将所有的机器学习算法分成两组:有...

  • 深度学习讲稿(3)

    1.5 准备工作 安装jupyter Notebook 和 Numpy Python 库强烈建议安装VScode...

  • 深度学习讲稿(8)

    2.7 无监督参数学习 无监督参数学习本质上是对数据进行分类,但是在数据分类之前已经对该数据有一定的标记。比如淘金...

  • 深度学习讲稿(25)

    5.3 随机梯度下降法 我们首先来看随机梯度下降法的运算顺序。前面我们已经讲了这种算法的学习逻辑。它对整个数据集要...

网友评论

      本文标题:深度学习讲稿(29)

      本文链接:https://www.haomeiwen.com/subject/ipfjcltx.html