![Python深度学习:基于TensorFlow(第2版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/658/48593658/b_48593658.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
1.7 用NumPy实现回归实例
前面我们介绍了NumPy的属性及各种操作,对如何使用NumPy数组有了一定认识。下面我们将分别用NumPy、TensorFlow实现同一个机器学习任务,比较它们之间的异同及优缺点,从而加深对TensorFlow的理解。
我们用最原始的NumPy实现有关回归的一个机器学习任务。这种方法的代码可能有点多,但每一步都是透明的,有利于理解每一步的工作原理。主要步骤分析如下。
首先,给出一个数组x,然后基于表达式y=3x2+2,加上一些噪声数据,到达另一组数据y。
然后,构建一个机器学习模型,学习表达式y=wx2+b的两个参数w、b。数组x、y的数据为训练数据。
最后,采用梯度下降法,通过多次迭代,学习后得出w、b的值。
以下为具体实现步骤。
1)导入需要的库。
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/37_01.jpg?sign=1739152549-6wfmjtsLFgxU7mO3GzvBwVFTqyemRW0W-0-af1cf0c17d4f780bd5559819c7ba2e5c)
2)生成输入数据x及目标数据y。
设置随机数种子,生成同一份数据,以便用多种方法进行比较。
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/37_02.jpg?sign=1739152549-ZAT76wudBqSmUQMEdckK5Fxc4QFnooFn-0-2de81ac47d491ee1cd1d692960934eb4)
3)查看x、y的分布情况。
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/37_03.jpg?sign=1739152549-oxeUbSRdlRBXd72z8z1gTo8jTgEMBVnL-0-53c80b3a8d78ff37c12c11b874f160de)
运行结果如图1-11所示。
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/37_04.jpg?sign=1739152549-uay2vhj8XHhSQmuFaKF31TWme780MzMo-0-df5b8d0537c357af9a594fc38e7812f1)
图1-11 NumPy实现的源数据
4)初始化权重参数。
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/37_05.jpg?sign=1739152549-kaEbLnYr4X5p8OLdauzkk0FxlpdECkou-0-162e39cb990f043d324d10d72f17b3fa)
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/38_01.jpg?sign=1739152549-pU22hKU5ObCiv7YoUzbdahSf7ncTGDtt-0-b65405621edaf6c1fcb130c5dec49c0c)
5)训练模型。
定义损失函数,假设批量大小为100:
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/38_02.jpg?sign=1739152549-Hj0t545EPvYQsKftX0jcb4lKNf1WF19A-0-95438de082908745edf7e6be15860508)
对损失函数求导:
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/38_03.jpg?sign=1739152549-LKEydFe0VR61xbXULRprUZaurzeS13js-0-f34131d93b56560c4cae20d25a6b597d)
利用梯度下降法学习参数,学习率为lr。
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/38_04.jpg?sign=1739152549-BQseh2RTZLpG6y2z9IhsfR4Gu0aFQswj-0-50f09f6ec268237988271b7c4ddb2474)
用代码实现上面这些表达式:
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/38_05.jpg?sign=1739152549-z2akoHX5zvD8Znaxuyz1SBkEwbe5wQk0-0-756de5a1c38d892fba4ff1e725eddae5)
6)可视化结果。
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/38_06.jpg?sign=1739152549-PP1Aw6B3jF7OWfrixakYSAek5VHVZIgY-0-c5c07fce0a5833e52b8dcd09f24c22a9)
运行结果如下,效果如图1-12所示。
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/39_01.jpg?sign=1739152549-RTR53x7z6B5d6nKvri4Z8ACMJ39Nm7PH-0-1a90e763207dd2a456346dad1b22f2fe)
![](https://epubservercos.yuewen.com/AE244A/28235093307371206/epubprivate/OEBPS/Images/39_02.jpg?sign=1739152549-iUAjMYh8gMHjSLHI4L8Jst0wvwPWaVWA-0-e91ce767191faf6c6b82b5eee4ce688d)
图1-12 可视化NumPy学习结果
从结果看来,学习效果还是比较理想的。