Python深度学习:基于TensorFlow(第2版)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.7 用NumPy实现回归实例

前面我们介绍了NumPy的属性及各种操作,对如何使用NumPy数组有了一定认识。下面我们将分别用NumPy、TensorFlow实现同一个机器学习任务,比较它们之间的异同及优缺点,从而加深对TensorFlow的理解。

我们用最原始的NumPy实现有关回归的一个机器学习任务。这种方法的代码可能有点多,但每一步都是透明的,有利于理解每一步的工作原理。主要步骤分析如下。

首先,给出一个数组x,然后基于表达式y=3x2+2,加上一些噪声数据,到达另一组数据y

然后,构建一个机器学习模型,学习表达式y=wx2+b的两个参数wb。数组xy的数据为训练数据。

最后,采用梯度下降法,通过多次迭代,学习后得出wb的值。

以下为具体实现步骤。

1)导入需要的库。

2)生成输入数据x及目标数据y。

设置随机数种子,生成同一份数据,以便用多种方法进行比较。

3)查看x、y的分布情况。

运行结果如图1-11所示。

图1-11 NumPy实现的源数据

4)初始化权重参数。

5)训练模型。

定义损失函数,假设批量大小为100:

对损失函数求导:

利用梯度下降法学习参数,学习率为lr。

用代码实现上面这些表达式:

6)可视化结果。

运行结果如下,效果如图1-12所示。

图1-12 可视化NumPy学习结果

从结果看来,学习效果还是比较理想的。