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

第1章 NumPy基础

为何第1章介绍NumPy基础?在机器学习和深度学习中,图像、声音、文本等首先要实现数字化。那么如何实现数字化?数字化后如何处理?这些都涉及NumPy。NumPy是数据科学的通用语言,而且与TensorFlow关系非常密切,是科学计算、深度学习的基石。TensorFlow中的重要概念—张量(Tensor)与NumPy非常相似,二者可以非常方便地进行转换。掌握NumPy是学好TensorFlow的重要基础,故我们把它列为全书第1章。

基于NumPy的运算有哪些优势?实际上Python本身包含列表(list)和数组(array)结构,但对于大数据来说,这些结构有很多不足。因为列表的元素可以是任何对象,因此列表中保存的是对象的指针。例如为了保存一个简单的[1, 2, 3]列表,我们需要有3个指针和3个整数对象。对于数值运算来说,这种结构显然比较浪费内存和CPU等宝贵资源。至于数组对象,它直接保存数值,与C语言的一维数组比较类似,但是它不支持多维,定义的内置函数也不多,因此也不适合做数值运算。

NumPy(Numerical Python的简称)的诞生弥补了这些不足,它提供了两种基本的对象:ndarray(n-dimensional array object,多维数组对象)和ufunc(universal function object,全局函数对象)。ndarray是存储单一数据类型的多维数组,而ufunc则为数组处理提供了丰富的函数。

NumPy的主要特点总结如下。

1)提供ndarray这种既快速又节省空间的多维数组,提供数组化的算术运算和高级的广播功能。

2)使用标准数学函数对整个数组的数据进行快速运算,而不需要通过编写循环语句实现。

3)可作为读取/写入磁盘上的阵列数据和操作存储器映像文件的工具。

4)拥有线性代数、随机数生成和傅里叶变换的能力。

5)提供集成C、C++、Fortran代码的工具。

本章主要内容如下:

❑把图像数字化

❑存取元素

❑NumPy的算术运算

❑数据变形

❑通用函数

❑广播机制

❑用NumPy实现回归实例